跳至主要內容

MySQL索引B+树高度计算

苏文广大约 1 分钟MySQLMySQLJava

MySQL索引B+树高度计算

  1. 总记录数 N
  2. 记录大小 k Byte
  3. 索引大小 x Byte
  4. 数据库指针大小 6 Byte
  5. 数据库页大小 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