B+树(B+Tree)

特性:

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

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

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

每一个父节点元素都是子节点元素最大或最小元素。

叶子节点包含了全部元素信息。并且每个叶子节点都带有指向下一个节点的指针,形成有序链表。

卫星数据是指索引元素所指向的数据数据记录 比如数据库行数。

b-树中无论中间节点还是叶子节点都包含卫星数据。

B+树中,只有叶子节点带有卫星数据,中间节点仅仅保存索引,没有其他关联

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

B+树好处体现在查询性能上,自上而下逐层查询中间节点,最终匹配叶子节点。

例如查询3.

第一次磁盘IO:

第二次磁盘IO:

第三次磁盘IO:

由于B+树中间节点没有卫星数据能够存储更多元素,比b-树更加“矮胖”,磁盘IO查询次数更少。

B+树每次查询都会查询到叶子节点,B-树可能查到中间节点,因为B+树查询更加稳定。

B-树的范围查找过程:查询范围3-11的元素。

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

中序遍历到元素6:

中序遍历到元素8:

中序遍历到元素9:

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

B+树的范围查找过程

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

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

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

相比较优点:

IO次数更少   查询性能稳定   范围查询更简便

B+树的特征:

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

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

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

B+树的优势:

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值