MySQL面试题: InnoDB中一颗的B+树可以存放多少行数据?

Posted 白-胖-子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL面试题: InnoDB中一颗的B+树可以存放多少行数据?相关的知识,希望对你有一定的参考价值。

假设定义一颗B+树高度为2,即一个根节点和若干叶子节点。
那么

  • 这棵B+树的存放总行记录数=根节点指针数*单个叶子记录的行数。
    这里先计算叶子节点,
  • B+树中的单个叶子节点的大小为16K,假设每一条目为1K,
    那么
  • 记录数即为16(16k/1K=16),
    然后计算非叶子节点能够存放多少个指针,
    假设主键ID为bigint类型,
    那么
  • 长度为8字节,而指针大小在InnoDB中是设置为6个字节,这样加起来一共是14个字节。
    那么
    通过页大小/(主键ID大小+指针大小),即16384/14=1170个指针,
    所以
  • 一颗高度为2的B+树能存放16*1170=18720条这样的记录。
    根据这个原理就可以算出
  • 一颗高度为3的B+树可以存放1611701170=21902400条记录。
    所以
  • 在InnoDB中B+树高度一般为2-3层,它就能满足千万级的数据存储
    B+ tree

以上是关于MySQL面试题: InnoDB中一颗的B+树可以存放多少行数据?的主要内容,如果未能解决你的问题,请参考以下文章

面试题:InnoDB中一棵B+树能存多少行数据?

后端面试之MySQL-InnoDB一颗B+树可以存放多少行数据?

面试官:InnoDB中一棵B+树可以存放多少行数据?

Mysql学习总结一

面试官:InnoDB中一棵B+树可以存放多少行数据?

面试官:InnoDB中一棵B+树可以存放多少行数据?