2026-10-21 23:37:54
一颗3层B+树在MySQL中大约能保存2100万条数据。具体分析如下:
页(Page)结构与可用空间InnoDB存储引擎中,页是磁盘管理的最小单位,默认大小为16KB(16384字节)。扣除页头、页尾等固定开销后,实际可用空间约为16282字节。
非叶子节点(索引页)的存储能力非叶子节点存储索引键值(主键)和指向子节点的指针。以int类型主键(4字节)为例,每个键值+指针的组合占用14字节(4字节键值 + 4字节子节点页号 + 6字节指针)。单个索引页可存储的键值+指针数量为:16282 ÷ 14 ≈ 1163即每层索引页最多包含1163个键值。
B+树层数与数据量计算
第1层(根节点):1个索引页,最多1163个键值,指向1163个子节点。
第2层(中间索引页):每个根节点键值对应1个子节点,共1163个索引页,每页仍可存储1163个键值,指向1163×1163个数据页。
第3层(叶子节点/数据页):每个数据页存储完整数据行。若每行数据大小为1KB,则单个数据页可存储16行(16KB ÷ 1KB)。总数据量计算为:1163(第1层键值) × 1163(第2层键值) × 16(第3层每页行数) ≈ 2100万条。
关键假设与限制
主键为int类型(4字节),若主键更大(如bigint),单个键值+指针占用空间增加,每层索引页存储的键值数量减少,总数据量随之降低。
数据行大小固定为1KB,实际行大小因字段类型和数量而异,需根据具体表结构调整计算。
B+树高度为3时,根节点为第1层,中间索引页为第2层,数据页为第3层。若高度定义不同(如根节点为第0层),层数对应需调整。

此计算基于理想情况,实际数据量可能因页填充率、碎片化等因素略有波动,但可作为估算参考。