漫画:什么是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

相关文章
|
8月前
|
存储 算法 关系型数据库
【面试普通人VS高手系列】b树和b+树的理解
【面试普通人VS高手系列】b树和b+树的理解
|
存储 算法
漫画:什么是 “哈夫曼树” ?
哈夫曼树是由麻省理工学院的哈夫曼博士于1952年发明,这到底是一颗什么样的树呢? 刚才我们学习了树的带权路径长度(WPL),而哈夫曼树(Huffman Tree)是在叶子结点和权重确定的情况下,带权路径长度最小的二叉树,也被称为最优二叉树。 举个例子,给定权重分别为1,3,4,6,8的叶子结点,我们应当构建怎样的二叉树,才能保证其带权路径长度最小? 原则上,我们应该让权重小的叶子结点远离树根,权重大的叶子结点靠近树根。
353 0
漫画:什么是 “哈夫曼树” ?
|
存储 NoSQL 关系型数据库
漫画:什么是跳跃表?
如果是没有商品名称的全量查询怎么办?总不可能把数据库里的所有记录全查出来吧,而且还要支持不同字段的排序。 所以,只能提前在内存中存储有序的全量商品集合,每一种排序方式都保存成独立的集合,每次请求的时候按照请求的排序种类,返回对应的集合。
150 1
漫画:什么是跳跃表?
漫画:什么是B-树?
下面来具体介绍一下B-树(Balance Tree),一个m阶的B树具有如下几个特征。
143 0
漫画:什么是B-树?
|
搜索推荐 算法
齐姐漫画:排序算法(一)
借用《算法导论》里的例子,就是我们打牌的时候,每新拿一张牌都会把它按顺序插入,这,其实就是插入排序。
158 0
齐姐漫画:排序算法(一)
|
存储 SQL 缓存
拜托,别再问我什么是 B+ 树了
拜托,别再问我什么是 B+ 树了
漫画:什么是AVL树?(修订版)
而在AVL树当中,我们通过“平衡因子”来判断一颗二叉树是否符合高度平衡。 到底什么是AVL树的平衡因子呢? 对于AVL树的每一个结点,平衡因子是它的左子树高度和右子树高度的差值。只有当二叉树所有结点的平衡因子都是-1, 0, 1这三个值的时候,这颗二叉树才是一颗合格的AVL树。
183 0
漫画:什么是AVL树?(修订版)
|
索引
漫画:什么是 “跳表” ?
如何进行二分查找呢? 首先根据数组下标,定位到数组的中间元素:由于要查找的元素20,大于中间元素12,再次定位到数组右半部分的中间元素:这一次定位到的元素正好是20,查找成功。
237 0
漫画:什么是 “跳表” ?
漫画:什么是红黑树?(整合版)(上)
二叉查找树(BST)具备什么特性呢? 1.左子树上所有结点的值均小于或等于它的根结点的值。 2.右子树上所有结点的值均大于或等于它的根结点的值。 3.左、右子树也分别为二叉排序树。
151 0
漫画:什么是红黑树?(整合版)(上)
漫画:什么是红黑树?(整合版)(下)
二叉查找树(BST)具备什么特性呢? 1.左子树上所有结点的值均小于或等于它的根结点的值。 2.右子树上所有结点的值均大于或等于它的根结点的值。 3.左、右子树也分别为二叉排序树。
136 0
漫画:什么是红黑树?(整合版)(下)