B+Tree索引:按顺序存储,每一个叶子节点到根结点的距离是相同的;左前缀索引,适合查询范围类的数据
假设定义一颗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+树可以存放16*1170*1170=21902400条记录。
所以在InnoDB中B+树高度一般为2-3层,它就能满足千万级的数据存储。
本文详细解释了B+树的高度与其能容纳的记录数的关系,特别关注了高度为2和3的B+树在InnoDB中的应用,指出其在千万级数据存储中的优势。通过计算展示了不同高度B+树的记录容量,并强调了InnoDB中常见的B+树高度范围。

562

被折叠的 条评论
为什么被折叠?



