定位慢SQL需先通过慢日志抓取问题SQL,再用EXPLAIN分析执行计划,结合EXPLAIN ANALYZE或profiling验证真实耗时,最后针对性优化索引与查询写法。

定位慢SQL,核心是“先找出来,再看为什么慢”。关键不在于一上来就调优,而是快速锁定问题SQL、确认执行瓶颈、验证优化效果。整个过程围绕日志采集、条件筛选、执行计划分析、针对性优化四步展开。
从数据库慢日志抓出“真凶”
MySQL默认的slow_query_log是第一道入口。确保它已开启,并合理设置阈值(如long_query_time = 1),避免日志爆炸或漏掉真实慢查询。
常见操作:
- 查日志路径:SHOW VARIABLES LIKE 'slow_query_log_file';
- 实时追加查看(Linux):tail -f /var/lib/mysql/xxx-slow.log
- 用mysqldumpslow汇总分析,例如:mysqldumpslow -s t -t 10 /var/lib/mysql/xxx-slow.log(按总耗时排序,取前10条)
- 注意:日志中可能含重复参数(如? ?),需结合应用层日志或general_log补全实际值
用EXPLAIN看懂SQL到底卡在哪
拿到可疑SQL后,别急着改,先加EXPLAIN FORMAT=TRADITIONAL(或FORMAT=JSON)看执行计划。重点关注几项:
标签: mysql linux js json ai 为什么
还木有评论哦,快来抢沙发吧~