Mysql索引(B+tree)的原理
B+tree 索引的原理
引用mysq技术内幕
B+树索引就是传统意义上的索引,这是目前关系型数据库系统中查找最为常用和最为有效的索引。B+树索引的构造类似于二叉树,根据键值(Key Value)快速找到数据。
注意这里的b+tree 不是binary 而是balance 平衡的意思
B+树索引并不能找到一个给定键值的具体行,B+树索引能找到的只是被查找数据行所在的页。然后数据库通过把页读入到内存,再在内存中进行查找,最后得到要查找的数据。
在介绍B+tree之前先要知道这几个概念 。
二分查找 算法
二叉查找树和平衡二叉树
B+tree的插入操作
如图是一个高度为2的B+tree
可以看到,不管怎么变化,B+树总是会保持平衡。但是为了保持平衡对于新插入的键值可能需要做大量的拆分页(split)操作。因为B+树结构主要用于磁盘,页的拆分意味着磁盘的操作,所以应该在可能的情况下尽量减少页的拆分操作。因此,B+树同样提供了类似于平衡二叉树的旋转(Rotation)功能。