InnoDB为何使用B+树索引?

97 阅读1分钟

B+树的特点

  • B+树是一棵平衡树根节点到叶子节点长度一致,查询效率高
  • B+树所有关键字都存储在叶子节点上,范围查询只需要遍历一遍叶子节点即可。
  • B+树叶子节点按照关键字大小顺序存放,可以支持按照关键字大小进行快速排序
  • B+树叶子结点使用指针连接子节点,支持范围查询跟倒序查询
  • B+树叶子节点之间通过双向链表连接,方便范围查询

B+树的优点

  1. 支持范围查询:进行范围查询,只需根节点一直遍历到子节点,数据存储叶子节点,叶子节点又有指针连接,方便范围查询。
  2. 支持排序:叶子节点按照关键字顺序存储,支持快速排序操作,提高效率。
  3. 存储更多索引数据:叶子节点只存储索引关键字,不存储实际数据,因此可存储更多索引。
  4. 节点分裂合并时io操作少:叶子结点大小固定,而且节点大小一般设置为一页的大小,使得节点分裂或合并,只需要读取跟写入一页。
  5. 利于磁盘预读:由于节点大小固定,可以一次性读取多个节点到内存,减少IO操作次数,提高查询效率。
  6. 利于缓存:非叶子节点只存储指向子节点的指针,不存储数据,使得缓存能够容纳更多索引数据,提高缓存的命中率,增加查询速度。