mysql如何查看慢查询统计_mysql慢查询统计分析

P粉602998670
发布: 2025-11-19 10:48:41
原创
924人浏览过
开启慢查询日志并设置long_query_time阈值,通过分析slow.log文件或使用mysqldumpslow、pt-query-digest工具,可定位执行时间长、扫描行数多的SQL语句,进而优化索引和查询性能。

mysql如何查看慢查询统计_mysql慢查询统计分析

MySQL中查看慢查询统计主要依赖于慢查询日志(Slow Query Log)的开启和相关系统变量的配置。通过分析这些日志,可以定位执行时间较长的SQL语句,进而优化数据库性能。

1. 确认慢查询日志是否开启

登录MySQL后,执行以下命令查看当前慢查询日志状态:

SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'long_query_time';
SHOW VARIABLES LIKE 'slow_query_log_file';
登录后复制
  • slow_query_log:值为ON表示已开启,OFF表示关闭。
  • long_query_time:定义“慢”的标准,单位是秒,默认是10秒。可设置为0.5等更小值以捕获更多查询。
  • slow_query_log_file:慢查询日志文件的存储路径。

如未开启,可通过以下命令临时开启(重启后失效):

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1; -- 建议设为1秒或更低
SET GLOBAL log_output = 'FILE'; -- 输出到文件
登录后复制

若需永久生效,需在my.cnfmy.ini配置文件中添加:

[mysqld]
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_output = FILE
登录后复制

2. 查看慢查询日志内容

使用文本工具查看日志文件内容:

sudo tail -f /var/log/mysql/slow.log
登录后复制

典型日志条目如下:

# Time: 2024-04-05T10:30:15.123456Z
# User@Host: root[root] @ localhost []
# Query_time: 2.345678  Lock_time: 0.000123 Rows_sent: 1000 Rows_examined: 100000
SET timestamp=1712345678;
SELECT * FROM orders WHERE create_time > '2024-01-01';
登录后复制
  • Query_time:查询耗时,超过long_query_time才会记录。
  • Rows_examined:扫描行数,数值大可能意味着缺少索引。
  • Rows_sent:返回行数,与扫描行数差距过大说明过滤效率低。

3. 使用mysqldumpslow工具分析日志

MySQL自带mysqldumpslow工具,可用于汇总分析慢查询日志。

常用命令示例:

AI Room Planner
AI Room Planner

AI 室内设计工具,免费为您的房间提供上百种设计方案

AI Room Planner 91
查看详情 AI Room Planner
# 查看最慢的前5条查询
mysqldumpslow -s at -t 5 /var/log/mysql/slow.log
<h1>按查询时间排序,合并相似SQL</h1><p>mysqldumpslow -s rt -t 10 -g "SELECT" /var/log/mysql/slow.log</p><h1>查看包含特定表的慢查询</h1><p>mysqldumpslow -g "orders" /var/log/mysql/slow.log</p>
登录后复制
  • -s at:按平均执行时间排序。
  • -s rt:按总响应时间排序。
  • -t N:显示前N条。
  • -g:过滤关键字。

4. 使用pt-query-digest进行深度分析(推荐)

Percona Toolkit中的pt-query-digest功能更强大,支持统计、报告生成和建议。

安装Percona Toolkit后执行:

pt-query-digest /var/log/mysql/slow.log > slow_report.txt
登录后复制

输出报告包含:

  • 最耗时SQL排名
  • 执行频率最高的SQL
  • 全表扫描、未使用索引的查询
  • 每条SQL的执行计划建议

也可直接分析实时查询:

pt-query-digest --processlist h=localhost --interval 10
登录后复制

基本上就这些。开启慢查询日志 + 合理设置阈值 + 定期用工具分析,能有效发现性能瓶颈。关键是根据Rows_examined和执行时间判断是否需要加索引或重写SQL。

以上就是mysql如何查看慢查询统计_mysql慢查询统计分析的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号