理解B树和B+树!为何它们常用在数据库中?

Posted 我想要的我会认真

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解B树和B+树!为何它们常用在数据库中?相关的知识,希望对你有一定的参考价值。

目录

文章内容

B树

B+树


文章内容

本文内容来自B站是一个充满咖喱味的视频

从磁盘结构到磁盘的数据存储从而引出索引,

再到数据量指数增长时引出多级索引,多级索引的要求是什么?手动添加?NO!我们希望是是自动添加,自动删除,表的大小增加索引增加,如果删除表数据那么索引随之减少。

根据我们更高要求多级索引进行多级自我管理的问题引出B树和B+树的想法,(多级索引倒转之后像棵树)

 首先为什么不是BST(左子树上所有结点的值均小于或等于它的根结点的值,右子树上所有结点的值均大于或等于它的根结点的值),因为每个节点只有一个key,有两个子节点,那么有没有一个节点多个key的树呢?

有的那就是m-way search tree - 多路搜索树(有m个子节点,m-1个关键字key),但是muitl-way search tree 可能退化为链表,为了防止这种情况发生必须加上限制条件从而引出

B树

1Root结点至少有两个子女

2.每个非根节点所包含关键字个数 j满足:⌈m/2⌉−1<=j<=m−1⌈m/2⌉−1<=j<=m−1

3.除根节点外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,子树个数k:

⌈m/2⌉<=k<=m⌈m/2⌉<=k<=m

4.所有叶子结点位于同一层

5.每个节点上的关键字都有指向数据的指针

6.创建的过程自下而上

B+树

M=4 的 B树和B+树插入10,20,30,40,50,60,70,80,90,100,11,21,31,41,51,61,71,81,91对比

1.B+树中,非叶子节点中的key关键字没有指向记录的指针,仅叶子节点有指向记录数据的指针

2.B+树中的每个关键字在叶子节点中都有其副本

3.B+树中的叶子节点有指向下一个节点的兄弟指针 (链表 - 稠密索引)

                                                                                                                                                                                                

以上是关于理解B树和B+树!为何它们常用在数据库中?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL基础篇--理解二叉树和B+树

B树和B+树

B树B+树和B*树

B树B+树和B*树

B树B+树和B*树

B树B+树和B*树