漫画:什么是B+树?

简介: 这一次我们来介绍B+树。

640.jpg

640.jpg

640.jpg

image.gif640.jpg

image.gif

一个m阶的B树具有如下几个特征:

1.根结点至少有两个子女。

2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m

3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m

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

5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。

640.jpg

image.gif

一个m阶的B+树具有如下几个特征:

1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。

2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。

640.jpg

640.jpgimage.gif

640.jpg

640.jpg

image.gif640.jpg

640.jpg

640.jpg

640.jpgimage.gif

640.jpg

640.jpg

640.jpgimage.gif

640.jpg

640.jpg

image.gif640.jpg

B-树中的卫星数据(Satellite Information):

640.jpg

image.gif640.jpg

B+树中的卫星数据(Satellite Information):

640.jpg

需要补充的是,在数据库的聚集索引(Clustered Index)中,叶子节点直接包含卫星数据。在非聚集索引(NonClustered Index)中,叶子节点带有指向卫星数据的指针。

640.jpg

640.jpgimage.gif

640.jpg

第一次磁盘IO:

image.gif

640.jpg

第二次磁盘IO:image.gif

640.jpg

第三次磁盘IO:

image.gif640.jpg

640.jpg

image.gif640.jpg

640.jpg

640.jpg

image.gif640.jpg

640.jpg

B-树的范围查找过程

自顶向下,查找到范围的下限(3):

640.jpg

中序遍历到元素6:

640.jpg

中序遍历到元素8:

640.jpg

中序遍历到元素9:

image.gif640.jpg

中序遍历到元素11,遍历结束:

640.jpg

image.gif

640.jpg

image.gif

640.jpg

image.gif

B+树的范围查找过程

自顶向下,查找到范围的下限(3):

image.gif640.jpg

通过链表指针,遍历到元素6, 8:

image.gif640.jpg

通过链表指针,遍历到元素9, 11,遍历结束:

image.gif640.jpg

640.jpg

640.jpg

image.gif640.jpg640.jpg

B+树的特征:

1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。

2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。

B+树的优势:

1.单一节点存储更多的元素,使得查询的IO次数更少。

2.所有查询都要查找到叶子节点,查询性能稳定。

3.所有叶子节点形成有序链表,便于范围查询。

640.jpg

相关文章
|
4月前
|
存储 算法 关系型数据库
【面试普通人VS高手系列】b树和b+树的理解
【面试普通人VS高手系列】b树和b+树的理解
2021年圣诞节送自己一颗树吧
2021年圣诞节送自己一颗树吧
2021年圣诞节送自己一颗树吧
|
前端开发
前端知识案例-树的广度优先遍历
前端知识案例-树的广度优先遍历
49 0
前端知识案例-树的广度优先遍历
树好像没有辣么难
之前不会用树处理数据,直到怎么用之后,发现还是很好用的
70 0
|
机器学习/深度学习 存储 算法
刷穿剑指offer-Day22-树I 树的基础知识讲解!
刷穿剑指offer-Day22-树I 树的基础知识讲解!
110 0
|
存储 SQL 缓存
拜托,别再问我什么是 B+ 树了
拜托,别再问我什么是 B+ 树了
漫画:什么是B-树?
下面来具体介绍一下B-树(Balance Tree),一个m阶的B树具有如下几个特征。
115 0
漫画:什么是B-树?
|
存储 算法
漫画:什么是 “哈夫曼树” ?
哈夫曼树是由麻省理工学院的哈夫曼博士于1952年发明,这到底是一颗什么样的树呢? 刚才我们学习了树的带权路径长度(WPL),而哈夫曼树(Huffman Tree)是在叶子结点和权重确定的情况下,带权路径长度最小的二叉树,也被称为最优二叉树。 举个例子,给定权重分别为1,3,4,6,8的叶子结点,我们应当构建怎样的二叉树,才能保证其带权路径长度最小? 原则上,我们应该让权重小的叶子结点远离树根,权重大的叶子结点靠近树根。
244 0
漫画:什么是 “哈夫曼树” ?
漫画:什么是AVL树?(修订版)
而在AVL树当中,我们通过“平衡因子”来判断一颗二叉树是否符合高度平衡。 到底什么是AVL树的平衡因子呢? 对于AVL树的每一个结点,平衡因子是它的左子树高度和右子树高度的差值。只有当二叉树所有结点的平衡因子都是-1, 0, 1这三个值的时候,这颗二叉树才是一颗合格的AVL树。
127 0
漫画:什么是AVL树?(修订版)
|
存储
漫画:“哈夫曼编码” 是什么鬼?
哈夫曼编码(Huffman Coding),同样是由麻省理工学院的哈夫曼博所发明,这种编码方式实现了两个重要目标: 1.任何一个字符编码,都不是其他字符编码的前缀。 2.信息编码的总长度最小。
195 0
漫画:“哈夫曼编码” 是什么鬼?