读书人

浅进深理解索引的实现(2)

发布时间: 2012-07-15 20:20:06 作者: rapoo

浅入深理解索引的实现(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();

InnoDB的代码太复杂了,有时候也不敢肯定自己的理解是对的。因此写了一个小脚本,来打印InnoDB数据文件中B+Tree。这样可以直观的来观察B+Tree的结构,验证自己的理解是否正确。ibd-analyzer.tar推荐关联性文章:由浅入深理解索引的实现(1)

读书人网 >其他数据库

热点推荐