MySQL数据中有记录慢查询的一种手段。并且是MySQL自带的。可用来排查那些查询sql语句执行得慢。从而给开发者提供一个调优得依据。
1.开启慢查询日志
SET GLOBAL slow_query_log = ON;
2.设置全局慢查询阈值(示例设为2秒)
SET GLOBAL long_query_time = 2;
3.【可选】刷新日志
注意:MySQL 8.0+为必须操作
FLUSH LOGS;
4.关闭记录未使用索引的查询
SET GLOBAL log_queries_not_using_indexes = OFF;
特别提醒:该操作启用后MySQL8.0+ 慢查询的阈值失效,会记录所有SQL
验证配置
查看慢查询日志开启状态和日志存放路径SQL
SHOW VARIABLES LIKE '%slow_query%';
查看慢查询阈值
SHOW VARIABLES LIKE '%long_query%';
1.查看是否开启慢查询记录功能及慢查询日志存放路径信息
show variables like 'slow_query%';
mysql> show variables like 'slow_query%';
+---------------------------+----------------------------------+
| Variable_name | Value |
+---------------------------+----------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /mysql/data/localhost-slow.log |
+---------------------------+----------------------------------+
2.查看设置的长时间记录阈值(超过这个时间将会被记录到上方配置的日志文件中)
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
配置慢查询日志启用/停用、日志存放路径、记录时间阈值修改
方式一:即时生效MySQL服务重启失效:
#设置日志存放路径
set global slow_query_log_file='/usr/local/mysql/data/slow.log';
#设置启用(ON)/停用日志(OFF)
set global slow_query_log='ON';
#设置慢查询阈值时间;下面是超过1秒就记录
set global long_query_time=1;
方式二:重启MySQL服务生效:
[mysqld]
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/data/slow.log
long_query_time = 1
测试:
select sleep(2);
查看慢查询日志记录:
cat /usr/local/mysql/data/slow.log
https://blog.xqlee.com/article/358.html