概述
红黑树等平衡树也可以用来实现索引,但是文件系统及数据库系统,普遍采用B+Tree作为索引结构,这是因为使用B+tree访问磁盘数据有更高的性能。
主要从两个点来回答:
第一点
对于一个数据库来说存储的数据量会比较多,导致索引也很大因此需要将索引存储在磁盘,但是磁盘的IO操作又非常耗,所以提高索引效率的关键在于减少磁盘IO的次数。
举个例子 对于 31 个节点的树来说 ,一个 5 阶 B+Tree 的高度是 3 一个红黑树的
最小高度是 5 ,树的高度基本决定了磁盘的 IO 次数 ,所以使用 B +Tree 性能要高
很多
第二点
B+Tree有个特点是相邻的数据在物理上也是相邻的,因为B+Tree的node的大小设为一个页,而一个节点上存有多个相邻的关键字和分支信息,每个节点只需要一次IO就能完全载入,相当于一次IO载入了多个相邻的关键字和分支,而红黑树不具有这个特性,红黑树中大小相邻的数据,在物理结构上可能距离相差很大。由于程序的局部性原理,如果我们在索引中采用了预加载的技术,每次磁盘访问的时候除了将访问到的页加载到磁盘,我们还可以基于局部性原理加载,几页相邻的数据到内存中,而这个加载是不需要消耗多余磁盘IO时间的。
因此基于局部性原理,以及B+Tree存储结构物理上的特性,所以B+Tree的索引性能比红黑树要好很多。