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层,它就能满足千万级的数据存储
以上是关于MySQL面试题: InnoDB中一颗的B+树可以存放多少行数据?的主要内容,如果未能解决你的问题,请参考以下文章