【MySQL】什么是慢查询日志?

本文基于 Server version: 8.0.20 MySQL Community Server - GPL 版本编写。
作于 2022年3月5日 11:26:09, 转载请声明。

1、慢查询日志介绍

慢查询能为SQL语句的优化带来很好的帮助。
(1)可以通过设置一个阈值,将运行时间超过该阈值的SQL语句,都记录在慢查询日志中。
(2)可以把所有的未走索引的SQL语句,都记录在慢查询日志中。

2、开启慢查询日志

慢查询日志的开关是:slow_query_log

【MySQL】什么是慢查询日志?_第1张图片
可通过此SQL语句设置慢查询日志的开关:

-- 打开开关
SET global slow_query_log = "ON";
--或
SET global slow_query_log = 1;

-- 关闭开关
SET global slow_query_log = "OFF";
-- 或
SET global slow_query_log = 0;

注意这种方式设置的 slow_query_log 只对当前use的database有效,换了database之后,会发现此数值又变成默认的 OFF

3、设置阈值时间

阈值时间记录在:long_query_time
【MySQL】什么是慢查询日志?_第2张图片
通过以下SQL设置阈值时间:

SET global log_query_time=1;

【MySQL】什么是慢查询日志?_第3张图片
注意此处需要重开一个session才可以看到效果。


4、设置慢查询文件

慢查询文件记录在:slow_query_log_file
【MySQL】什么是慢查询日志?_第4张图片
可通过以下SQL设置慢日志文件地址:

SET global slow_query_log_file = "D:\MySQL_SLOW.log";

设置结果如下:
【MySQL】什么是慢查询日志?_第5张图片

5、把不走索引SQL记录到慢日志

未走索引记录到慢查询日志的开关:log_queries_not_using_index
【MySQL】什么是慢查询日志?_第6张图片
设置不走索引的SQL语句,全部记录到慢日志:

SET global log_queries_not_using_indexes = "ON";

6、把慢管理语句记录到慢日志

慢管理语句记录到慢日志的开关是:log_slow_admin_statements
【MySQL】什么是慢查询日志?_第7张图片
通过以下SQL开启次开关:

SET global log_slow_admin_statements=1;
-- 或
SET global log_slow_admin_statements="ON";

7、MySQL配置文件实现以上配置

以上配置都是在MySQL运行期间,对全局参数设置的值。
当MySQL服务重启之后,这些参数都会恢复默认值。
可以通过MySQL配置文件 my.ini[mysqld] 中加入这些配置,实现每次启动的时候,自动加载配置文件的这些参数:
【MySQL】什么是慢查询日志?_第8张图片

8、实验

分别执行以下SQL:

SELECT SLEEP(5);
SELECT SLEEP(11);

观察慢日志文件,可以看到执行详情。
【MySQL】什么是慢查询日志?_第9张图片

8、查询慢查询日志条数

show global status like 'slow_queries';

【MySQL】什么是慢查询日志?_第10张图片

你可能感兴趣的:(MySQL,1024程序员节,spring,cloud,eureka)