从一次慢查询开始
线上接口响应时间突然从 120ms 上升到 1.4s,我通常会先按下面的顺序排查:
- 看调用链里是不是数据库查询时间异常。
- 确认最近是否有索引、SQL 或数据量变化。
- 对照执行计划,判断问题出在扫描范围还是排序阶段。
我会记录什么
- 问题出现的背景
- 排查顺序和判断依据
- 最终修复动作
- 这次排查对后续工程实践的影响
技术文章真正有价值的部分,通常不是结论,而是过程里的取舍。
ctx, cancel := context.WithTimeout(ctx, 200*time.Millisecond)
defer cancel()
rows, err := db.QueryContext(ctx, query)
if err != nil {
return err
}