MySQL慢查询日志分析是程序员优化数据库性能的必备技能。本文手把手教你开启慢查询日志、使用mysqldumpslow和pt-query-digest工具分析日志,并提供全表扫描、临时表排序、深分页等常见慢SQL的优化方案。通过对比优化前后的慢查询数据验证效果,帮助开发者快速定位性能瓶颈,提升数据库查询效率。附赠Java面试资料和MySQL调优技巧,助力程序员在面试中脱颖而出。
在日常开发中,数据库性能绝对是面试中的高频考点。当面试官问“MySQL慢查询日志怎么用?如何定位慢SQL?”——如果你能清晰阐述实战经验,绝对加分!今天就手把手带你搞懂慢查询日志分析的全流程。
想让MySQL自动帮你揪出那些“拖后腿”的SQL,必须先开启日志功能。修改my.cnf(或my.ini)配置文件:
slow_query_log = 1 # 开启慢查询日志
slow_query_log_file = /var/log/mysql/slow.log # 日志文件路径
long_query_time = 2 # 超过2秒的查询记为慢查询
log_queries_not_using_indexes = 1 # 记录未使用索引的查询(强烈建议开启!)
重启MySQL服务生效。立即生效可以用命令:
SET GLOBAL slow_query_log = 'ON';
📌 划重点:
long_query_time别设太高(建议1~2秒),否则漏掉关键问题!慢查询日志的准确性直接决定优化方向。
日志生成了,但一堆文本怎么看?别慌!三大工具助你秒变分析高手:
mysqldumpslow(MySQL自带)
mysqldumpslow -s t /var/log/mysql/slow.log # 按总耗时排序
直接输出最耗时的Top SQL,适合快速定位问题。
pt-query-digest(Percona神器🔥)
功能超强!自动生成分析报告:
pt-query-digest /var/log/mysql/slow.log > slow_report.txt
报告包含:
第三方可视化工具
如Percona Monitoring and Management (PPM),图形化展示慢查询趋势,直观高效:
(图为PPM慢查询分析面板)
💡 面试常考:工具选型理由?我答:“线上紧急排查用
mysqldumpslow快速抓TOP SQL;定期优化用pt-query-digest做深度分析。”
分析报告拿到手,接下来就是“对症下药”:
SELECT * FROM orders WHERE status = 'pending'; -- status字段无索引
解法:加索引!但注意索引区分度:
ALTER TABLE orders ADD INDEX idx_status (status);
SELECT user_id, COUNT(*) FROM logs
GROUP BY user_id ORDER BY COUNT(*) DESC;
解法:调整索引顺序或force index:
ALTER TABLE logs ADD INDEX idx_user_count (user_id, counter);
SELECT * FROM products ORDER BY id LIMIT 10000, 10; -- 越往后越慢
解法:改用游标分页(记住上次ID):
SELECT * FROM products WHERE id > 10000 ORDER BY id LIMIT 10;
🚨 避坑提示:别盲目加索引!先EXPLAIN验证执行计划,索引过多影响写性能。
优化后必须验证!对比优化前后的慢查询日志数据:

(图示:优化后慢查询减少70%)
🔗 链接: Java面试宝典 提取码: 9b3g
覆盖MySQL调优、分布式、JVM等高频面试题,助力冲刺大厂!
如果你准备入手面试鸭会员,通过 面试鸭返利网 联系我可返25元!用省下的钱喝杯咖啡☕,刷题更带劲~
回到面试鸭返利网首页查看更多面试资源
💪 搞定慢查询日志分析,下次面试官再问数据库优化,你就是全场最亮的仔!
扫码联系我返利
(当前返利8元,金额随官方实际价格波动,最好提前咨询)

面试鸭小程序码

美团大额优惠券,给自己加个鸡腿吧!

支付宝扫码领取1-8元无门槛红包
