注意绝大多数业务单表不会超过千万、亿级别刚好落在高度 3 这个区间是典型值不是固定值。第 1 层根节点只有 1 页第 2 层中间非叶子层第 3 层叶子节点存真实数据不管什么页大小都是16KB16384Byte吗默认情况下InnoDB 所有数据页聚簇索引页、二级索引页、undo 页、系统页等都是 16KB但不是 “不管什么页一定是 16KB”。16KB 16384 Byte是默认配置innodb_page_size16k。第一步非叶子节点页最多放多少索引项非叶子节点存储主键值子页号不存数据仅用作指路页头信息 128Byte 剩余16384 - 128 16256 B页面元数据事务、链表等数据项假设主键BIGINT 8Byte子页号 6Byte则一条非叶子索引记录86 14 Byte则一条非叶子最多条目16256 / 14 ≈ 1161 即非叶子页一页大约可存1161个索引若主键是 INT (4 字节)一条 4610B一页可存≈1625 条下面继续用 BIGINT 演示。第二步叶子节点一页存多少行叶子存放完整行记录同时有页内目录、页头。扣除页头 16256B假设一行数据大小 1KB 1024B关键则16256 /1024 ≈ 16即叶子一页大约16条完整数据第三步逐层计算三层B树容量根节点分出1161页分别又各自分出1161页所以共1161² 1347921个叶子页每页16行 再乘16 21566736结论示例主键 BIGINT单行 1KB三层 B 树大约可存 2156 万 条记录