标准答案
- 先说明业务场景、流量和可感知影响,例如租户订单列表在高峰 P99 升高并拖满连接池。
- 给出证据链:慢日志参数、执行计划、扫描与返回行数、锁等待、数据分布和系统指标。
- 解释根因可能包括缺少租户加状态加时间的访问路径、深分页、低选择性过滤或长事务,而不是泛泛说索引没建。
- 比较候选方案,例如联合索引、游标分页、归档历史数据、读模型或分片,并说明为何先选择风险最小且收益最大的组合。
- 说明发布与验证:在线变更窗口、回滚条件、前后 P99、写入成本、复制延迟和后续监控或容量计划。
题目解析
一个好的案例体现的是工程判断。索引可能让读快了,却会增加写入和存储;把列表改成游标分页改善深页,却改变了产品交互;分库分表能扩容,却引入跨分片复杂度。要把这些取舍讲出来。
还要避免把一次偶发故障包装成通用结论。明确当时的数据量、查询模式和约束,说明哪些经验可复用、哪些需要重新测量,回答才可信。
常见误区
- 只罗列数据库名词和索引名,没有问题现象、指标、方案比较与验证结果。
- 把临时 FORCE INDEX 或扩容机器当作最终治理,忽略数据模型和访问路径的长期成本。