MySQL索引B+树高度计算
大约 1 分钟
MySQL索引B+树高度计算
- 总记录数 N
- 记录大小 k Byte
- 索引大小 x Byte
- 数据库指针大小 6 Byte
- 数据库页大小 16KB
从底往上计算高度
叶子节点存放数据
一个叶子节点存放数据量 c = 16 * 1024 / k
一个非叶子节点存放叶子节点数量 b = 16 * 1024 / (x + 6)
总页数 p = N / c
索引的高度 h = log(p,b)
树高 = h + 1
聚簇索引例子计算
总记录N = 20,000,000
记录大小k = 1024
索引大小x = 8
总页数p = 1250000
索引数b = 1170
索引树高log(p,b) = 2
树高 = 3
总结, 2千万的数据,B+树的高度为3
辅助索引例子计算
辅助索引的叶子节点存放的事主键值, 辅助索引找到主键, 通过主键去聚簇索引查找记录
辅助索引最大是256Byte
总记录N = 20,000,000
记录大小k = 8
索引大小x = 256
总页数p = 9765
索引数b = 62
索引树高log(p,b) = 3
树高 = 4
总结, 2千万的数据,辅助索引B+树的高度为4