B+Tree原理

Catalogue
  1. 1. 参考资料

局部性原理: 当一个数据被用到时,其附近的数据也通常会马上被使用。程序运行期间所需要的数据通常比较集中。
磁盘预读:一般操作系统将内存和磁盘空间分为大小相等的块,称为页,一般大小为4k。
内存和磁盘以页为大小进行数据交换,程序运行时要读取的数据不在内存中时,会发生缺页中断,磁盘会从缺失页连续读取多页进内存,然后程序继续运行。

B+Tree节点: 节点大小一般设计等于一个页的大小,实现一个节点一次IO就能读进内存,由于根节点常驻内存,所以一次索引最多用h-1次IO,每个节点的出度d很大,通常超100,因此h很小,通常不超过3层,对这种3层每个节点100的情况下,3次IO至少可检索100万的数据。

从上面分析可知,每个节点的出度d越大,则可支持检索的数据量越大,由于B+Tree相对于B-Tree,非叶子节点不存data,因此可容纳更多key。

http://blog.codinglabs.org/articles/theory-of-mysql-index.html

参考资料