当前位置: 首页 > wzjs >正文

企业网站定制公司wordpress站点地址灰显

企业网站定制公司,wordpress站点地址灰显,东莞市58同城招聘网最新招聘,2022电商平台哪个值得做目录 1、B树和N叉树 1.1、B树的基本定义 1.2、B树与N叉树的关系 1、N叉树 2、B树的节点结构 1.3、B树的N叉特性 1、阶数决定N的值 2、B树的N叉特性 3、B树被称为N叉树原因 4、阶数和性能的影响​编辑 1.4、B树与B树的区别 2、B树的查找元素 3、B树的插入元素 4、…

目录

1、B+树和N叉树

1.1、B+树的基本定义

1.2、B+树与N叉树的关系

1、N叉树

2、B+树的节点结构

1.3、B+树的N叉特性

1、阶数决定N的值

2、B+树的N叉特性

3、B+树被称为N叉树原因

4、阶数和性能的影响​编辑

1.4、B+树与B树的区别

2、B+树的查找元素

3、B+树的插入元素

4、实际应用

4.1、Innodb引擎

4.2、文件系统


前言

        B+树是一种优化的B树结构,适用于数据库索引。它保证所有数据都在叶子节点,且叶子节点间有链接,便于数据检索。

数据结构如下所示:


1、B+树和N叉树

1.1、B+树的基本定义

        B+树 是一种 平衡的多叉搜索树,广泛应用于数据库和文件系统的索引结构(如MySQL的InnoDB存储引擎)。

核心特点

        每个节点可以包含多个子节点(即 N叉树)。

        所有叶子节点通过指针连接,形成一个有序链表。

        内部节点仅存储键值,数据(记录指针)仅存在于叶子节点。

1.2、B+树与N叉树的关系

1、N叉树

  • N叉树 是指每个节点最多有 NN 个子节点的树结构。
    • 二叉树:每个节点最多有 2 个子节点(N=2)。
    • 三叉树:每个节点最多有 3 个子节点(N=3)。
    • B+树:每个节点最多有 mm 个子节点(N=m,其中 mm 是 B+树的阶数)。

2、B+树的节点结构

B+树的节点分为 内部节点 和 叶子节点。

1、内部节点(非叶子节点):

存储 键值(Key)和 子节点指针。每个节点最多有 mm 个子节点(N=m)。

2、叶子节点

存储 键值 和 数据指针(或实际数据)。所有叶子节点通过指针 双向连接,形成有序链表。

1.3、B+树的N叉特性

1、阶数决定N的值

  • 阶数 m 是 B+树的核心参数,表示:
    • 每个节点最多有 m 个子节点。
    • 每个节点最多存储 m−1个键值。

示例

        对于阶数 m=5的 B+树:每个节点最多有 5 个子节点(N=5)。每个节点最多存储 4 个键值。

2、B+树的N叉特性

每个节点的子节点数量可变

        内部节点的子节点数在 ⌈m/2⌉ 到 m 之间(保持树的平衡)。

        叶子节点的子节点数为 0(无子节点)。

3、B+树被称为N叉树原因

  • 直接原因:B+树的每个节点最多有 mm 个子节点(N=m),符合N叉树的定义。
  • 根本原因
    • 多路平衡:B+树通过多路分支(N叉)减少树的高度,提高磁盘IO效率。
    • 阶数 mm:B+树的性能与 mm 直接相关,mm 越大,树越矮,查找路径越短。

 示例:阶数 m=3 的 B+树

        [10, 20]              // 内部节点(2个键值,3个子节点)/     |     \
[5, 8]      [15]      [25, 30] // 叶子节点(存储数据)
  • 内部节点:存储键值 10、20,指向 3 个子节点。
  • 叶子节点:存储数据(如记录指针),并通过指针连接。

4、阶数和性能的影响

1.4、B+树与B树的区别

如下所示:

⚠️注意:

        B+树是 N叉树 的一种,其阶数 mm 决定了每个节点的最大子节点数(N=m)。这种多叉结构是B+树在数据库和文件系统中广泛应用的核心原因。


2、B+树的查找元素

        B+树中的所有数据均保存在叶子结点,且根结点和内部结点均只是充当控制查找记录的媒介,并不代表数据本身,所有的内部结点元素都同时存在于子结点中,是子节点元素中是最大(或最小)元素。

如下图所示:

例如B+树中查找55这个关键字,步骤如下:

1、在根节点中对比55和根节点中的元素[60, 85],发现55<60,因此应该在第一个结点中继续寻找;
2、比较55和第一个节点中的元素[10, 20, 50, 60],发现50<55<60,因此55应该存在于第四个结点当中;
3、继续对比55和第四个结点中的元素[55, 60],找到55,查找成功。当然,也有查找失败的情况,即要查找的元素并不在B+树中。


3、B+树的插入元素

其插入规则如下:

1、插入的操作全部都在叶子结点上进行,且不能破坏关键字自小而大的顺序;
2、当插入关键字后结点的关键字个数大于m,需要进行“分裂”。


B+树的插入有四种情况:


1、若被插入关键字所在的结点,其含有关键字数目小于m,则直接插入;


2、若被插入关键字所在的结点,其含有关键字数目等于m,则需要将这个结点分为左右两部分,中间的结点放到父节点中。假设其双亲结点中包含的关键字个数小于 m,则插入操作完成。


3、在第 2 种情况中,如果上移操作导致其双亲结点中关键字个数大于 M,则应继续分裂其双亲结点。


4、若插入的关键字比当前结点中的最大值还大,破坏了B+树中从根结点到当前结点的所有索引值,此时需要及时根节点、字节点,再做叶子节点插入操作。


举例:

1、插入关键字12,此时第一个叶子节点部分[10, 15]关键字的个数<m,可以直接插入:(紫色代表插入的元素)

2、插入95,需要插入到最后一个叶子节点部分[85, 91, 97]:

此时该节点的关键字个数大于m,需要进行分裂操作,并且父节点需要插入一个新的关键字:

3、插入40,需要插入到第二个叶子节点部分[21, 37, 44]:

此时该节点的关键字个数大于m,需要进行分裂操作,并且父节点需要插入一个新的关键字:

父节点插入新的关键字之后,根结点关键字的个数大于m,也需要进行分裂:

4、插入100,由于其值比最大值 97 还大,插入之后,从根结点到该结点经过的所有结点中的所有值都要由 97 改为 100。(橙色为修改之后的)

修改完最大值之后,在最后一个节点处插入100:


4、实际应用

4.1、Innodb引擎

关于更多Innodb引擎的介绍:聊聊对Mysql数据库的见解_如何更好的理解mysql-CSDN博客

        MySQL数据表以文件方式存放在磁盘中,默认使用共享表空间(0)存储。

        mysql使用共享表空间存储,所有表的数据和索引会存储在一个共享的 ibdata 文件中。表结构以 .frm 文件的形式存储在与表对应的文件夹中。

        如果使用了独立表空间,InnoDB 会将每个表的结构和数据存储在独立的 .ibd 文件中。每当表的数据或索引被更新时,文件也会随之变化。表的结构仍然以 .frm 文件存储。

更多知识详细可参考:谈谈mysql的日志的用途_数据库日志节点作用-CSDN博客

每个页节点段、非页节点段可参考如下:

注意:阶数由页大小(Page Size)决定(通常为 16KB)。

阶数计算示例

每个关键字(如主键)为 8 字节,指针为 6 字节。当磁盘块Page页大小为 16KB:

实际阶数约为 1170,树高度为 3 时可存储 1170^3≈1.6 亿条记录。

存储的计算公式:

4.2、文件系统

  • Linux 的 Ext4 文件系统
    • 使用 B+树管理目录项。
    • 阶数由块大小(4KB)和目录项大小决定。


总结

        在数据库中通常不只是查询(select)一条记录,如果是多条记录的话,B树要做中序遍历,可能要跨层访问,而B+树由于所有的数据都在叶子节点,不用跨层,同时由于有链表结构只要找到首尾,就能通过链表把数据都读出来。


参考文章:

1、数据结构——B+树-CSDN博客

2、谈谈mysql的日志的用途_数据库日志节点作用-CSDN博客


文章转载自:

http://0m4RfkcU.rtbhz.cn
http://JfYJNPLX.rtbhz.cn
http://wRDXHnlh.rtbhz.cn
http://5DMwLmUl.rtbhz.cn
http://qRQUZMmg.rtbhz.cn
http://jXVdebjJ.rtbhz.cn
http://WYS4Tbus.rtbhz.cn
http://W8koyUUO.rtbhz.cn
http://Wipm4QCH.rtbhz.cn
http://2vNU013C.rtbhz.cn
http://dZ7xl7SG.rtbhz.cn
http://SqEey2mf.rtbhz.cn
http://JnVJRAE5.rtbhz.cn
http://Yt3Zt9kk.rtbhz.cn
http://bMBnKfKS.rtbhz.cn
http://2AbT5mFK.rtbhz.cn
http://FS4nqHX3.rtbhz.cn
http://xMGY9sKz.rtbhz.cn
http://mAlKUCPu.rtbhz.cn
http://nyCo9IBW.rtbhz.cn
http://KT88T6Nu.rtbhz.cn
http://pcwTSwfd.rtbhz.cn
http://wgJfgNyr.rtbhz.cn
http://E4JDLb5X.rtbhz.cn
http://GFobqfFb.rtbhz.cn
http://zvKlQLdV.rtbhz.cn
http://CJhS47ki.rtbhz.cn
http://ZkPIxmQ5.rtbhz.cn
http://SF85Uxe2.rtbhz.cn
http://evmodozZ.rtbhz.cn
http://www.dtcms.com/wzjs/747555.html

相关文章:

  • 做网站asp炫酷手机网站模板
  • 做网站前40个免费网站推广平台下载
  • 集团网站建设价格酷家乐网站做墙裙教程
  • 网站挂马怎么办2024年1月时事新闻
  • 在后台怎么做网站内链银川网站建设实习生
  • 泉州做网站设计公司亚马逊雨林的资料
  • eclipse 网站开发过程公司网站域名做邮箱
  • 东方资产营销网站苏州营销网站建设
  • 淮南网站建设淮南wordpress多站点批量添加
  • 网站做哪块简单宁波网站制作优化服务公司
  • 做网站发布信息徐州网站建设方案维护
  • 哪里可以做网站推广外贸人才网
  • 什么叫网页什么叫网站哪里有卖自己做的网站
  • 长春网易网站建设摄影网页设计方案
  • 十大软件免费下载网站排行榜网站下载视频方法
  • 外贸公司建网站一般多少钱沈阳网站公司排名
  • 超能搜索引擎系统网站页面跳转英文
  • 北京网站优化服务有限公司微信公众号小程序制作
  • 建设创意网站成都哪里好玩适合情侣
  • 自助推广平台seo网站seo
  • 做个外贸网站万网免费建企业网站
  • 住建局网站信息化建设如何开启wordpress mu
  • 个人网站的设计旅游网站建设普通论文
  • 网站建设营销型网站建设田达摩托车官方网站
  • 常州有哪些好的网站建设案例成都住建局官网平台
  • 如何选择模板网站建设广州康体设备网站建设
  • 公众号做微网站盐城网站建设培训学校
  • 如何搞好网站建设网站设计原则的第三要素
  • 河北省住房和城乡建设网站怎么注册公司最好
  • 作文网站网址大全开发一个网站一般需要多少钱