架构 · 高频 4/5

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

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

简短答案

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

详细解析

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

面试回答模板

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

易错点

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

常见追问

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

相关题目

继续刷题
MySQL 入门 高频 4/5

MySQL

MySQL 不能只背概念。要结合表结构、数据量、索引、执行计划、事务边界和慢查询指标说明。