理解B树和B+树!为何它们常用在数据库中?
Posted 我想要的我会认真
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解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+树!为何它们常用在数据库中?的主要内容,如果未能解决你的问题,请参考以下文章