在MySQL中,一棵高度为3的B+树大约可以存储多少行数据?请说明你的计算过程和假设条件。
考察说明
考查对MySQL索引结构(B+树)以及数据存储容量的理解,包括数据页大小、索引大小、行大小等因素。
回答思路
- 【回答框架 1】B+树用于MySQL的索引结构,每个节点对应一个数据页,默认页大小为16KB。
- 【回答框架 2】非叶子节点存储索引键和指针,每个索引键约8字节(bigint)加上指针6字节,共约14字节,因此一个页面大约能存储16KB / 14 ≈ 1170个索引项。
- 【回答框架 3】叶子节点存储实际数据行,假设每行数据大小为1KB,则每个叶子页面约存储16行。
- 【回答框架 4】三层B+树:根节点和中间节点各能索引1170个节点,叶子节点总共约1170 * 1170 * 16 ≈ 2190万行数据。
- 【回答框架 5】实际数量受索引键大小、行长、页利用率等因素影响,具体计算应基于实际参数。
- 【关键点 1】默认页大小16KB是计算基础。
- 【关键点 2】非叶子节点索引项约14字节,可存储约1170个索引项。
- 【关键点 3】三层结构能存储约2000万行(假设行大小为1KB)。
- 【关键点 4】计算结果为估算值,实际取决于索引键和行大小。
- 【易错点 1】不要把索引项大小固定为8字节,指针和键大小会变。
- 【易错点 2】不要忽略叶子节点存储的是实际数据行,而非索引项。
- 【易错点 3】实际行大小和页填充率影响计算结果,不可直接套用。