B+ 树为什么成为 MySQL 存储引擎 InnoDB 使用的索引数据结构

B+树 的优势 个人猜测

面试🦆上也有细🔒的题目

  • 相对于红黑树或者二叉平衡树,B+ 树的层数更少,能减少大量的 IO 次数
  • 相对于 B 树,B+ 树在非叶子节点上存储的信息是索引键值和指向子节点的指针,并不存储行数据或者单个字段数据,一个 B+ 树和 B 树的节点在逻辑上对应 MySQL InnoDB 引擎存储逻辑单元中的页,而 MySQL 中的存储逻辑单元中的页就是操作系统中操作磁盘的常用单位,在一次磁盘 IO 中读出的页,B+ 树可以包含更多的子节点指针,这一点上导致 B+ 树的层数比 B 树更低,读取相同数量的节点时 B+ 树的 IO 次数更少
    • 这种情况下一个节点可能会含有更多的冗余空间
  • B+ 树的叶子节点存储所有的数据和键值, IO 次数固定,查询稳定
  • 所有的叶子节点按照顺序形成双向链表,有利于范围查询和排序查询
image.png image.png image.png image.png
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP