B+树的删除原理


前言

B+树是一种平衡查找树。在B+树中,所有记录节点都按键值大小顺序存放在同一层叶子节点上,由各叶子节点指针连接。

B+树中的叶子节点(Leaf Page)是树中的最底层节点,它们包含实际的数据项(或记录)以及指向这些数据项的指针。

B+树的索引页(Index Page)是指内部节点。索引页包含索引键值和指向子节点的指针。在B+树中,索引页的作用是帮助定位数据的叶子节点。

B+树的删除操作

B+树的删除操作必须保证删除后叶子节点的记录依然排序,因此删除操作可能涉及到节点的合并和分裂,B+树使用填充因子来控制树的删除变化。

B+树的填充因子(Fill Factor),表示节点中的记录与节点容量的比例。填充因子的常见取值范围通常是0.5到1之间,具体取决于B+树的设计和应用需求。

以下是删除操作的3种情况:

表1-1
Leaf Page小于填充因子Index Page小于填充因子                  操作
nono直接将记录从Leaf Page删除,如果该记录还存在于Index Page中,可以选择用右子树的最小记录或左子树的最大记录替换它
yesno合并Leaf Page和它的兄弟节点,更新Index Page
yesyes1) 合并Leaf Page和它的兄弟节点

2) 更新Index Page

3) 合并Index Page和它的兄弟节点

示例

图1-1 示例B+树


图1-1是一棵B+树,高度为3,每页最多可存放4条记录,扇出为5,根据它来进行删除操作。首先删除30的记录,该操作符合表1-1中第一种情况,删除后得到图1-2。

在这里插入图片描述

图1-2 删除键值30


接着删除键值为85的记录,这也是表1-1中第一种情况,该记录同时还是Index Page 中的值,因此在删除85这条记录后,还应将此时的右子树最小记录90更新到 Index Page ,得到图1-3。



在这里插入图片描述

图1-3 删除键值85


接着删除键值为95的记录,这是表1-1中第二种情况,删除后该 Leaf Page 的 Fill Factor 小于50%,将其与兄弟节点合并,得到图1-4。




在这里插入图片描述

图1-4 删除键值95


最后看删除25的情况,即表1-1中第三种情况。删除 Leaf Page 中25的的记录后,Fill Factor 小于50%,这时需要做合并操作,同样在删除 Index Page 中25的记录后,也需要做 Index Page 的合并操作,最后得到图1-5。

在这里插入图片描述

图1-5 删除键值25



总结

总之,B+树的删除操作可能需要递归和节点的合并,以确保树的平衡性和有序性。删除操作是B+树维护的一部分,它们旨在确保树仍然是一个有效的索引结构,适用于高效的检索操作。在实际实现中,需要仔细处理各种情况,以确保B+树的属性得以维护。

参考文档
1.《MySQL技术内幕 InnoDB存储引擎 第2版》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值