1. B-Tree
以一颗最大度数为5(5阶)的B-tree为例,每个节点最多存储4个key,5个指针。意味着:在一个有n个key的节点中,有n+1个指针,原理如下图:
现在,依次存入如下数据:200、100、400、300、500、450、600、550。
- 前四个数据存入后按大小排好后及指针指向规律:
- 插入下一个数据500时,该节点已满,于是乎中间key向上裂变:
- 继续插入,当到550时:
- 此时,需插入的结点已满,中间key继续向上裂变:
- 完成!!
这就是B-Tree实现原理。
视频学习资料:11. 进阶-索引-结构-Btree_哔哩哔哩_bilibili
动态图形演示网站:B-Tree Visualization (usfca.edu)
注意:动态图形演示网站需要自己插入数据创建树。
2. B+Tree
B+Tree是B-Tree的优化,所有的数据都存放在叶子节点中,非叶子节点只起到索引作用。同时,叶子节点形成一个单向链表。
举例:
-
建立一个5阶树,依次插入以下数据:200、100、400、300、500、450、600、550。
-
插入第五个数据时,中间key向上裂变,但是该键在叶子中依然存在,并且,叶子形成单链表:
- 所有数据插完后如下:
MySQL索引数据结构对经典的B+tree进行了优化。在原有基础上,增加一个指向相邻叶子结点的链表指针,形成带有顺序指针的B+Tree,提高区间访问的性能。对上一组数据建树结果如下:
这就是B+Tree实现原理。
视频学习资料:12. 进阶-索引-结构-B+tree_哔哩哔哩_bilibili
动态图形演示网站:B+ Tree Visualization (usfca.edu)
这是一篇学习笔记,来源于上面的视频学习资料,要是有没有讲清楚的地方小伙伴们可以看一下视频,视频中老师讲得非常清楚,共勉!
标签:创建,哔哩,Tree,插入,key,MySQL,节点,指针 From: https://www.cnblogs.com/ljdxxxtd/p/17014628.html