浅入深理解索引的实现(2)
转自 由浅入深理解索引的实现(2)
如果要看“由浅入深理解索引的实现(1)”,请点这里。
教科书上的B+Tree是一个简化了的,方便于研究和教学的B+Tree。然而在数据库实现时,为了
更好的性能或者降低实现的难度,都会在细节上进行一定的变化。下面以InnoDB为例,来说说
这些变化。
04 - Sparse Index中的数据指针
? 在“由浅入深理解索引的实现(1)”中提到,Sparse Index中的每个键值都有一个指针指向
? 所在的数据页。这样每个B+Tree都有指针指向数据页。如图Fig.1所示:
Fig.8
? 以上是以B-Tree为例,B+Tree的分裂过程类似。InnoDB的实现以这个思路为基础,不过要复杂
? 一些。因为顺序插入是有方向性的,可能是从小到大,也可能是从大到小的插入数据。所以要区
? 分不同的情况。如果要了解细节,可参考以下函数的代码。
? ? btr_page_split_and_insert();
? ? btr_page_get_split_rec_to_right();
??? btr_page_get_split_rec_to_right();