B+树及数据库索引的应用

Posted amiezhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了B+树及数据库索引的应用相关的知识,希望对你有一定的参考价值。

B树

  每个节点都存储key和data,所有节点组成这棵树,并且叶子节点指针为null。

B+树

  只有叶子节点存储data,叶子节点包含了这棵树的所有键值,叶子节点不存储指针。

  后来,在B+树上增加了顺序访问指针,也就是每个叶子节点增加一个指向相邻叶子节点的指针,这样一棵树成了数据库系统实现索引的首选数据结构。 

  原因有很多,最主要的是这棵树矮胖,呵呵。一般来说,索引很大,往往以索引文件的形式存储的磁盘上,索引查找时产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗要高几个数量级,所以评价一个数据结构作为索引的优劣最重要的指标就是在查找过程中磁盘I/O操作次数的时间复杂度。树高度越小,I/O次数越少。 

  那为什么是B+树而不是B树呢,因为它内节点不存储data,这样一个节点就可以存储更多的key。

mysql中,最常用的两个存储引擎是MyISAMInnoDB,它们对索引的实现方式是不同的。

 

MyISAM 

  data存的是数据地址。索引是索引,数据是数据。

  技术分享图片

 

InnoDB

  data存的是数据本身。索引也是数据。

  技术分享图片



以上是关于B+树及数据库索引的应用的主要内容,如果未能解决你的问题,请参考以下文章

大话数据结构.pdf

索引是什么,索引的数据结构.B树,B+树

索引是什么,索引的数据结构.B树,B+树

索引是什么,索引的数据结构.B树,B+树

B树在数据库索引中的应用剖析(转载)

B-树和B+树的应用:数据搜索和数据库索引