首先开启慢查询日志,通过配置slow_query_log、long_query_time等参数记录执行缓慢的SQL;接着使用mysqldumpslow或pt-query-digest分析日志,识别高频、耗时长、扫描多的语句;最后结合EXPLAIN查看执行计划,检查type、key、rows和Extra信息,优化索引或SQL结构。

要分析 MySQL 的慢查询语句,核心是开启慢查询日志并结合工具进行解读。关键在于定位执行时间长、扫描数据多或未合理使用索引的 SQL 语句。
开启慢查询日志
确保 MySQL 已启用慢查询日志功能,这是分析的前提:
在配置文件 my.cnf 或 my.ini 中添加以下参数:
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = ON
重启 MySQL 或执行 SET GLOBAL 命令动态生效long_query_time 定义“慢”的标准,单位为秒,可设为 0.5 或 1log_queries_not_using_indexes 会记录未走索引的语句,便于优化
使用 mysqldumpslow 分析日志
MySQL 自带的 mysqldumpslow 是快速分析慢查询日志的命令行工具:
查看最慢的前 10 条语句:
mysqldumpslow -s t -r -t 10 /var/log/mysql/slow.log按出现次数排序,找出高频慢查询:
mysqldumpslow -s c -r /var/log/mysql/slow.log过滤特定表或用户:
mysqldumpslow -g “ORDER BY” /var/log/mysql/slow.log
输出结果会聚合相似语句,显示执行次数、平均耗时、锁时间等信息。
LanguagePro
LanguagePro是一款强大的AI写作助手,可以帮助你更好、更快、更有效地写作。
120 查看详情
使用 pt-query-digest 进行深度分析
pt-query-digest(Percona Toolkit 中的工具)比 mysqldumpslow 更强大,支持统计维度更丰富:
安装 Percona Toolkit 后运行:
pt-query-digest /var/log/mysql/slow.log输出包括:
– 消耗总时间最多的语句
– 扫描行数最多的查询
– 使用临时表或文件排序的语句
– 建议添加的索引还能直接分析实时查询流:
pt-query-digest –processlist h=localhost
结合 EXPLAIN 分析具体语句
找到可疑 SQL 后,使用 EXPLAIN 查看执行计划:
在 SQL 前加上 EXPLAIN,如:
EXPLAIN SELECT * FROM orders WHERE user_id = 123;重点关注:
– type:是否为 ALL(全表扫描)
– key:是否使用了索引
– rows:扫描行数是否过大
– Extra:是否出现 Using filesort、Using temporary
根据执行计划判断是否需要创建索引、重写 SQL 或调整表结构。
基本上就这些。开启日志、收集数据、用工具分析、再深入 EXPLAIN 验证,就能系统性地优化慢查询。
以上就是mysql如何分析慢查询语句的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/721390.html
微信扫一扫
支付宝扫一扫