分析慢sql的步骤

排查慢 SQL 的 6 步「急诊流程」——一句口诀:
“开监控 → 抓现场 → 看计划 → 分段测 → 改索引 → 压验证”。

  1. 开监控
    • 打开慢日志:SET long_query_time=0.1;(秒)
    • 或实时:information_schema.processlist / performance_schema.events_statements_summary_by_digest

  2. 抓现场
    SHOW FULL PROCESSLIST 看正在跑的慢 SQL
    pt-query-digest / mysqldumpslow 把慢日志排序 TOP-N

  3. 看计划
    EXPLAIN ANALYZE(MySQL 8) 或 EXPLAIN FORMAT=JSON
    • 重点:type ≥ ALL 需优化;key 为 NULL 没命中索引;rows 过大;Extra 含 Using filesort / Using temporary

  4. 分段测
    • 把 WHERE、JOIN、ORDER BY、LIMIT 逐段注释,找耗时拐点
    • 用 optimizer trace 看优化器为何选错索引

  5. 改索引
    • 缺索引:按最左前缀补联合索引
    • 索引失效:函数、隐式转换、LIKE '%xx' → 重写 SQL 或生成列
    • 回表太多:建覆盖索引,让 Extra 变 Using index

  6. 压验证
    • 改完跑 sysbench 或业务压测,对比慢日志 RT/QPS
    • 回归:确认无新慢 SQL 产生

总结:
慢日志 → EXPLAIN → trace → 索引/重写 → 压测 → 上线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值