B树系列文章(2)--插入操作(摘自老杨)
来源:互联网 发布:杭州牛盾网络 编辑:程序博客网 时间:2024/04/29 15:21
3.B树上的插入操作
为了便于问题的描述,现重新构造一个只有两层的B树。见图2。
简单插入操作:
参考图2,先考虑一个简单的操作,向该B树插入一条索引键值为9的记录。执行流行如下:
1)执行索引键值=9的查找操作,确定该新记录应该插入到叶子节点L1中。
2)此时发现叶子节点L1中还是有空闲记录空间的,因此可以确定该新记录可以插入L1中而不会导致分裂。
3)将记录10、16向后移动移动一个位置,插入索引键值为9的新记录。插入之后,8、9、10、16还是顺序的。
经过此插入操作之后,新的B树见图3。
复杂插入操作:
参加图3,现在继续插入索引键值为13的记录。执行流程如下:
1)执行索引键值=13的查找操作,确定该新记录应该插入到叶子节点L1中。
2)此时发现叶子节点L1中已经没有足够的空间来容纳新的记录,此时需要进行分裂节点的操作。
3)分配一个新的叶子节点页L3,将满页L1中的后一半数据移入L3中。重新设置叶子节点的左右兄弟指针。参见图4。
4)叶子节点L3虽然生成了,但是上层索引节点用还没有相应的指针指向它。因此需要在索引节点I1增加一个索引项:索引键值为10、指针指向叶子节点L3。如果I1的空间不够,还会导致I1节点的分裂,当然此处未发生这种情况。参加图5。
5)将索引键值=13的新记录插入到L3中,执行结束。见图6。
- B树系列文章(2)--插入操作(摘自老杨)
- B树系列文章(1)--查询操作(摘自老杨)
- B树系列文章(3)--删除、更新操作(摘自老杨)
- B树系列文章(2)--插入操作
- B树系列文章(2)--插入操作
- 数据库性能调优技术系列文章(2)--深入理解单表执行计划 (摘自老杨)
- 数据库性能调优技术系列文章(1)--索引调优(摘自老杨)
- B树系列文章(1)--查询操作
- B树系列文章(1)--查询操作
- 数据库性能调优技术系列文章(3)--深入理解嵌套循环执行计划(摘自老杨)
- 数据库性能调优技术系列文章(4)--深入理解散列连接执行计划(摘自老杨)
- B树系列文章
- 深入理解mysql之BDB系列(2)---数据元页结构(摘自老杨)
- 深入理解数据库原理系列(2)---并发控制原理(摘自老杨)
- 思考mysql内核之初级系列2---我可以为你服务什么?(摘自老杨)
- B树系列文章(3)--删除、更新操作
- B树系列文章(3)--删除、更新操作
- B树 (插入操作)
- Eclipse Rcp中替换Eclipse默认全局快捷键
- oracle dump log的内容分析
- 笔筒没刻完就裂了
- 未来软件开发发展趋势平台化开发技术
- 编辑框 改变背景、字体、文本颜色、长度限制、英文 汉字判断
- B树系列文章(2)--插入操作(摘自老杨)
- wxWidgets 编译, 工程部署, 自动build, 完整build 和设置工程
- 删除表中某字段重复记录
- gsoap开发webService
- SQL Server和Oracle的常用函数对比
- MySQL MVCC实现及其机制(转载)
- 12岁男孩发现Firefox严重漏洞获奖3000美元
- B树系列文章(3)--删除、更新操作(摘自老杨)
- InheritableThreadLocal的认识--一种可继承的ThreadLocal