开启慢查询日志并设置long_query_time阈值,通过分析slow.log文件或使用mysqldumpslow、pt-query-digest工具,可定位执行时间长、扫描行数多的SQL语句,进而优化索引和查询性能。

MySQL中查看慢查询统计主要依赖于慢查询日志(Slow Query Log)的开启和相关系统变量的配置。通过分析这些日志,可以定位执行时间较长的SQL语句,进而优化数据库性能。
登录MySQL后,执行以下命令查看当前慢查询日志状态:
SHOW VARIABLES LIKE 'slow_query_log'; SHOW VARIABLES LIKE 'long_query_time'; SHOW VARIABLES LIKE 'slow_query_log_file';
如未开启,可通过以下命令临时开启(重启后失效):
SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 1; -- 建议设为1秒或更低 SET GLOBAL log_output = 'FILE'; -- 输出到文件
若需永久生效,需在my.cnf或my.ini配置文件中添加:
[mysqld] slow_query_log = ON slow_query_log_file = /var/log/mysql/slow.log long_query_time = 1 log_output = FILE
使用文本工具查看日志文件内容:
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';
long_query_time才会记录。MySQL自带mysqldumpslow工具,可用于汇总分析慢查询日志。
常用命令示例:
# 查看最慢的前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>
Percona Toolkit中的pt-query-digest功能更强大,支持统计、报告生成和建议。
安装Percona Toolkit后执行:
pt-query-digest /var/log/mysql/slow.log > slow_report.txt
输出报告包含:
也可直接分析实时查询:
pt-query-digest --processlist h=localhost --interval 10
基本上就这些。开启慢查询日志 + 合理设置阈值 + 定期用工具分析,能有效发现性能瓶颈。关键是根据Rows_examined和执行时间判断是否需要加索引或重写SQL。
以上就是mysql如何查看慢查询统计_mysql慢查询统计分析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号