概念
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句。 由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的sql,结合之前explain进行全面分析。
怎么用?
-
默认情况
MySQL8.0数据库默认开启慢查询日志,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件
SHOW VARIABLES LIKE 'slow_query_log%';
-
如何开启?
set global slow_query_log=1;
-
修改默认阈值时间 重启服务生效
SET GLOBAL long_query_time=3;
-
记录慢查询
#模拟慢查询 SELECT SLEEP(5);
-
在日志文件中发现以下内容
# Time: 2021-10-04T12:54:01.192234Z # User@Host: root[root] @ localhost [127.0.0.1] Id: 24 # Query_time: 5.015311 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 SET timestamp=1633352041; /* ApplicationName=IntelliJ IDEA 2021.2 */ SELECT SLEEP(5);
-
查看当前记录的慢语句的个数
SHOW GLOBAL STATUS LIKE '%queries%';