架构 · 高频 4/5

如何从 B+ 树角度理解单表 2000 万后考虑分表?

单表数据量增加会带来索引树膨胀、页分裂、缓存命中下降和维护成本上升,但是否分表要结合行大小、访问模式和性能指标判断。

简短答案

单表数据量增加会带来索引树膨胀、页分裂、缓存命中下降和维护成本上升,但是否分表要结合行大小、访问模式和性能指标判断。

详细解析

2000 万不是绝对阈值。真正要看单行大小、索引数量、热数据比例、查询模式和机器配置。数据变大后,索引层级可能增加,Buffer Pool 命中率下降,写入维护多个索引的成本上升。

面试回答模板

我不会把 2000 万当固定规则,而是解释它背后的成本变化:索引体积变大、缓存命中下降、范围扫描变慢、DDL 和备份成本上升。是否分表要用慢 SQL、容量增长和业务查询模式一起判断。

易错点

  • 只背结论,不解释原理和边界。
  • 忽略真实生产环境中的容量、延迟、一致性和失败重试。
  • 没有结合项目经验说明为什么这样设计。

常见追问

  • 这个方案在高并发下有什么风险?
  • 如果数据规模扩大十倍,你会如何调整?
  • 线上出现异常时,你会先看哪些指标?

相关题目

继续刷题
MySQL 困难 ★★★★★

MySQL 索引失效的问题如何排查?

先用 EXPLAIN 看执行计划,再检查联合索引顺序、函数计算、隐式类型转换、范围查询、排序和统计信息是否导致优化器放弃索引。

MySQL 入门 ★★★★

Mysql

Mysql 是 MySQL 中需要重点复习的条目,已从金山文档目录导入,后续可在后台补充完整答案、代码示例和图片。