答案:通过修改配置文件或动态设置开启慢查询日志,记录执行时间超过阈值的SQL语句以分析性能。1. 查看slow_query_log、long_query_time、slow_query_log_file状态;2. 推荐在my.cnf中设置slow_query_log=ON、指定slow_query_log_file路径、long_query_time阈值及log_queries_not_using_indexes;3. 或用SET GLOBAL临时启用;4. 确保日志目录权限正确并重启MySQL服务;5. 使用mysqldumpslow分析日志文件内容,关注Query_time和Rows_examined等指标。

要开启和配置 MySQL 慢查询日志,主要是通过修改 MySQL 配置文件或在运行时动态设置相关参数。慢查询日志用于记录执行时间超过指定阈值的 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:定义“慢”的标准,单位为秒(如 2.0 表示超过 2 秒)
- slow_query_log_file:慢查询日志文件的存储路径
2. 开启并配置慢查询日志
有两种方式:修改配置文件永久生效,或使用命令临时启用。
方法一:修改配置文件(推荐)
编辑 MySQL 配置文件 my.cnf 或 my.ini(Linux 通常位于 /etc/my.cnf,Windows 在安装目录下):
[mysqld]slow_query_log = ON
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes = ON
说明:
- slow_query_log = ON:启用慢查询日志
- slow_query_log_file:指定日志文件路径,确保目录存在且 MySQL 有写入权限
- long_query_time:设置慢查询阈值,可设为 0.5、1、2 等
- log_queries_not_using_indexes = ON:记录未使用索引的查询,即使执行很快也记录(可选)
方法二:动态设置(临时生效)
如果不想重启 MySQL,可以在线开启:
SET GLOBAL slow_query_log = 'ON';SET GLOBAL long_query_time = 2;
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';
SET GLOBAL log_queries_not_using_indexes = 'ON';
注意:动态设置在 MySQL 重启后会失效,需配合配置文件使用。
3. 检查日志文件权限与重启服务
确保日志目录可写,例如 Linux 下:
sudo mkdir -p /var/log/mysqlsudo chown mysql:mysql /var/log/mysql
sudo chmod 755 /var/log/mysql
修改配置后重启 MySQL 服务:
sudo systemctl restart mysql4. 查看和分析慢查询日志
日志文件内容示例:
# Time: 2024-04-05T10:23:45.123456Z# User@Host: root[root] @ localhost []
# Query_time: 3.200000 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 100000
SET timestamp=1712305425;
SELECT * FROM users WHERE name = 'test';
关键字段:
- Query_time:查询耗时
- Rows_examined:扫描行数
- Rows_sent:返回行数
可用 mysqldumpslow 工具分析日志:
mysqldumpslow /var/log/mysql/mysql-slow.log常用参数:
- -s t:按查询时间排序
- -t 10:显示前 10 条
例如:
mysqldumpslow -s t -t 10 /var/log/mysql/mysql-slow.log基本上就这些。配置完成后,定期检查慢查询日志能有效发现性能瓶颈。










