美文网首页
数据库索引为什么使用B-tree和B+tree

数据库索引为什么使用B-tree和B+tree

作者: 王小二黑 | 来源:发表于2019-05-04 23:24 被阅读0次

数据库索引为什么使用B-tree或者B+tree,而不是使用AVL树或者RB-Tree?

首先对比B-tree和普通二叉树:
首先B-tree是一种多叉树, 相比于AVL树之类的有序二叉树而言,孩子比较多,元素一定的情况下,孩子越多,高度就越低。
那高度低带来了什么好处呢?
我们都知道磁盘随机IO的速度远远低于内存,所以减少磁盘随机IO就可以大大提高效率。
我们假定树中总共用N个节点, 那么AVL树从根节点到目标节点的最大比较次数应该是Log2(N) ,而B-tree是Logm(N)+m(m是多叉树的兄弟节点数量)。 由于数据是被存储在磁盘上的,从高层到低层每次前进一个节点,都可能产生一次磁盘IO。对于多叉的B-tree而言, 由于多个兄弟节点被存储在同一块磁盘上,所以当到达目标层次之后,一次IO可以读取所有的兄弟节点, 最后m次在兄弟之间比较的逻辑就完全可以在内存中比较了。
简单的说,AVL树可能需要Log2(N)磁盘IO,而B-tree只需要Logm(N)磁盘IO

再对比B-tree和B+tree:
B+tree最大的优势在于将所有数据有序的存放到了叶子节点上, 而所有叶子节点存放了指向下一个叶子节点的指针,因此提供了非常高效的Range操作的能力。
另外,由于B+tree的非叶子节点不再存储具体的数据,只存放叶子节点的指针,因此可以在同一个磁盘块上存放更多的兄弟节点,进一步减小了树的高度,也就减小了磁盘IO的次数。

相关文章

  • 数据库索引为什么使用B-tree和B+tree

    数据库索引为什么使用B-tree或者B+tree,而不是使用AVL树或者RB-Tree? 首先对比B-tree和普...

  • 索引

    索引类型 常用的索引类型有2种,B-Tree和Hash B-Tree InnoDB存储引擎就是用B+Tree实现其...

  • Mysql索引结构

    一、B+Tree 二、B+Tree分析 mysql使用的是B+Tree,为什么不使用B-Tree呢,主要是树结构决...

  • 索引的原理

    目前大部分数据库系统及文件系统都采用B-Tree(B树)或其变种B+Tree(B+树)作为索引结构。B+Tree是...

  • 索引详解

    什么是索引? 索引的分类? B+Tree索引 哈希索引 R-Tree 全文索引 索引的原理? B-Tree索引 h...

  • Mysql索引的理解:B-Tree(B-树)和B+Tree(B+

    为什么会使用B-Tree和B+Tree,而不是二叉树、红黑树 数据结构 说索引之前需要先提到一点,树结构做查找时,...

  • MySQL之 B-Tree / B+Tree 索引

    1. 特点 MySQL 的 InnoDB 存储引擎下,使用的索引算法是 B+Tree,在 B-Tree 的基础上,...

  • mysql 索引

    1.索引 B*Tree索引 b-tree -> b+tree(建立叶节点的双向连接) -> b*tree (建立叶...

  • MySQL索引原理

    一、索引的类型 1.1 B-Tree索引还是B+Tree索引? 当人们谈论索引时,如果没有特别指明类型,那多半说的...

  • B树算法普及 和 索引结构

    B树算法普及 B-tree B+tree B*Tree B树索引结构 0 4 第...

网友评论

      本文标题:数据库索引为什么使用B-tree和B+tree

      本文链接:https://www.haomeiwen.com/subject/xikqoqtx.html