mysql 查看慢查询

云游道人 云游道人 2025-05-24 12 阅读 0 评论

在 MySQL 中查看慢查询,可以通过以下几种方法:

1. 启用并配置慢查询日志

MySQL 的「慢查询日志」会记录执行时间超过指定阈值的 SQL 语句,默认未开启。需要以下步骤:


步骤 1:检查当前配置

-- 查看慢查询日志是否开启(ON/OFF) SHOW VARIABLES LIKE 'slow_query_log'; -- 查看慢查询日志文件路径 SHOW VARIABLES LIKE 'slow_query_log_file'; -- 查看慢查询阈值(单位:秒,默认 10 秒) SHOW VARIABLES LIKE 'long_query_time'; -- 是否记录未使用索引的查询(可选) SHOW VARIABLES LIKE 'log_queries_not_using_indexes';


步骤 2:动态开启(无需重启 MySQL)

-- 开启慢查询日志(临时生效,重启失效) SET GLOBAL slow_query_log = 'ON'; -- 设置慢查询阈值(例如设为 1 秒) SET GLOBAL long_query_time = 1; -- 可选:记录未使用索引的查询 SET GLOBAL log_queries_not_using_indexes = 'ON';


步骤 3:永久生效(修改配置文件)

修改 MySQL 配置文件(如 my.cnf 或 my.ini),添加以下内容:

[mysqld] slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 1 log_queries_not_using_indexes = 1

重启 MySQL 服务使配置生效。


2. 查看慢查询日志

直接查看日志文件内容(路径由 slow_query_log_file 指定):

# Linux/Mac 查看日志 sudo tail -f /var/log/mysql/mysql-slow.log

3. 使用工具分析慢查询日志

方法 1:mysqldumpslow(MySQL 自带)

汇总分析慢查询日志:

# 按总耗时排序 mysqldumpslow -s t /var/log/mysql/mysql-slow.log # 按出现次数排序 mysqldumpslow -s c /var/log/mysql/mysql-slow.log # 按单个查询的锁定时间排序 mysqldumpslow -s l /var/log/mysql/mysql-slow.log # 查看帮助 mysqldumpslow --help

方法 2:pt-query-digest(Percona Toolkit)

更强大的第三方工具(需安装):

# 安装 Percona Toolkit(以 Ubuntu 为例) sudo apt-get install percona-toolkit # 分析慢查询日志 pt-query-digest /var/log/mysql/mysql-slow.log


4. 直接查询 information_schema

通过系统表查看慢查询(需开启 slow_query_log):

-- 查看最近记录的慢查询 SELECT * FROM information_schema.slow_log;


关键参数总结

        参数                                                     说明

slow_query_log                                 是否开启慢查询日志(ON/OFF)

slow_query_log_file                           日志文件路径

long_query_time                                慢查询阈值(单位:秒)

log_queries_not_using_indexes         是否记录未使用索引的查询

常见问题

1、日志文件权限问题

确保 MySQL 用户有权限写入日志文件路径。


2、动态设置 long_query_time 不生效

需重新连接 MySQL 会话,或直接在配置文件中修改。


3、日志过大

定期清理日志文件,或使用工具(如 logrotate)自动管理。

通过以上方法,您可以快速定位和分析 MySQL 慢查询,优化数据库性能。



下一篇

相关阅读

发表评论

访客 访客
快捷回复: 表情:
评论列表 (有 0 条评论,12人围观)