B树
AVL树是二叉平衡查找树,B树就是多路平衡查找树
B树就是B-树,中间的短线是英文连接符,只是翻译的时候将短线翻译成了减号。
B树全称Balance-tree
B树是为了存储设备或者磁盘而设计的一种平衡查找树,与红黑树类似
B+树
B+树是B树的一种变形,它把数据都存储在叶结点,而内部结点只存关键字和孩子指针,因此简化了内部结点的分支因子,B+树遍历也更高效,其中B+树只需所有叶子节点串成链表这样就可以从头到尾遍历,其中内部结点是并不存储信息,而是存储叶子结点的最小值作为索引
B+树的叶子节点之间用指针连在一起
每一个父节点的元素都出现在子节点中,是子节点的最大(或最小)元素
根节点的最大元素,也就等同于整个B+树的最大元素。
以后无论插入删除多少元素,始终都要保持最大元素在根节点当中
所有数据都会出现在叶子节点当中
父节点的元素都会出现在叶子节点当中每一个叶子节点都带有指向下一个节点的指针,形成了一个有序链表
not all values found in the inner nodes of the index must appear as data entries in the leaf nodes of the index. They are there ONLY for navigation purposes. They could be there due to some previous deletions, for example. Remember also that B+trees only store the data (data entries) in the leaf pages.
为什么说B+树比B树更适合做操作系统的数据库索引和文件索引?
(1)B+树的磁盘读写的代价更低
B+树内部结点没有指向关键字具体信息的指针,这样内部结点相对B树更小。
(2)B+树的查询更加的稳定
因为非终端结点并不是最终指向文件内容的结点,仅仅是作为叶子结点中关键字的索引。这样所有的关键字的查找都会走一条从根结点到叶子结点的路径。所有的关键字查询长度都是相同的,查询效率相当。
B+树中间节点没有Data数据,所以同样大小的磁盘页可以容纳更多的节点元素。所以数据量相同的情况下,B+树比B树更加“矮胖“,因此使用的IO查询次数更少。
https://blog.csdn.net/qq_26222859/article/details/80631121
https://www.bilibili.com/video/BV1n7411A7x3
MySQL数据表的B+树索引图
B+树的叶节点是磁盘页
同样节点的B树与B+树
B树 & B+树
最新推荐文章于 2022-06-11 23:16:24 发布