【MySQL技术内幕】25-B+树的操作

作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题


代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等


联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬

B+树中,所有记录节点都按照键值的大小顺序放在同一层叶子节点,各个叶子节点指针进行连接。

图中指针是单向的,但是书上的图是双向的,而且旋转应该也是双向才能完成)

202303232331464151.png

B+树插入处理

LeafPage满IndexPage满操作
NoNo直接插入到叶子节点
YesNo1.拆分LeafPage 2.将中间的节点值加入到IndexPage中 3.中间节点左边的记录放拆分后的左页 4.其余(包括中间节点)放右页
YesYes1.拆分LeafPage,步骤与上条一致(当作IndexPage还未满) 2.拆分IndexPage,将其与普通LeafPage看待

页拆分意味着层次增加,因此B+树也会进行旋转。当Leaf Page满了的时候,会去查看其左右兄弟页是否已满,若未满则会移动记录到兄弟页上,通常顺序是先左后右。

B+树删除操作
删除合并叶子的标准是填充因子(fill factor),50%是可以设置的最小值。

LeafPage小于填充因子IndexPage小于填充因子操作
NoNo直接在叶子节点中删除该记录,若该记录是IndexPage中的值则将该记录的右边记录代替
YesNo合并叶子节点和它的兄弟节点,更新IndexPage
YesYes1.合并叶子节点和其兄弟节点 2.更新IndexPage 3.合并IndexPage和其兄弟节点

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值