mysql慢查询,mysql慢查询日志
================================
©Copyright 蕃薯耀 2020-11-27
https://www.cnblogs.com/fanshuyao/
一、配置文件设置慢查询,永久有效,一般不设置,只需要启动慢查询1、2天就行
# 启动慢查询
slow_query_log=1#不设置的话,默认为创建一个日志文件:C:\ProgramData\MySQL\MySQL Server5.5\data\host_name-slow.log
#slow_query_log_file=不用设置了
#慢查询阈值
long_query_time=2#日志存储方式。log_output='FILE'表示将日志存入文件,默认值是'FILE'。
#log_output='TABLE'表示将日志存入数据库。
#table方式可以直接查表(SELECT * FROM mysql.slow_log;)
#需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件。
log_output=FILE
二、设置临时有效,重启失效
SET GLOBAL slow_query_log=1;
使用set global slow_query_log=1开启了慢查询日志只对当前数据库生效,MySQL重启后则会失效。
三、查看慢查询的配置信息
SHOW VARIABLES LIKE '%slow_query_log%';
mysql> SHOW VARIABLES LIKE '%slow_query_log%';+---------------------+----------------------------------------------------------------------+
| Variable_name | VALUE |
+---------------------+----------------------------------------------------------------------+
| slow_query_log | ON |
| slow_query_log_file | C:\ProgramData\MySQL\MySQL SERVER 5.5\DATA\xxx-slow.log |
+---------------------+----------------------------------------------------------------------+
2 ROWS IN SET (0.00 sec)
四、查看慢查询日志文件
SHOW VARIABLES LIKE 'slow_query_log_file';
mysql> SHOW VARIABLES LIKE 'slow_query_log_file';+---------------------+----------------------------------------------------------------------+
| Variable_name | VALUE |
+---------------------+----------------------------------------------------------------------+
| slow_query_log_file | C:\ProgramData\MySQL\MySQL SERVER 5.5\DATA\xxx-slow.log |
+---------------------+----------------------------------------------------------------------+
1 ROW IN SET (0.00 sec)
五、设置慢查询阈值,默认是10秒
SET GLOBAL long_query_time = 2;
六、查询慢查询设置的时间
#(需要重新连接或新开一个会话才能看到修改值)
SHOW VARIABLESLIKE 'long_query_time';
#或
#(下面为全局的,不需要新创建会话)
SHOW GLOBAL VARIABLESLIKE 'long_query_time';
mysql> SHOW VARIABLES LIKE 'long_query_time';+-----------------+-----------+
| Variable_name | VALUE |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 ROW IN SET (0.00sec)
mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time';+-----------------+-----------+
| Variable_name | VALUE |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 ROW IN SET (0.00sec)
#修改慢查询时间之后
mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time';+-----------------+----------+
| Variable_name | VALUE |
+-----------------+----------+
| long_query_time | 2.000000 |
+-----------------+----------+
1 ROW IN SET (0.00 sec)
七、设置日志存储方式,FILE或者TABLE
FILE 文件方式,得找到文件打开
TABLE 方式可以直接查表(SELECT * FROM mysql.slow_log;)
SET GLOBAL log_output = 'TABLE';
查看慢查询输出的方式:FILE或者TABLE(设置输出方式:set global log_output='TABLE';)
SHOW VARIABLES LIKE '%log_output%';
mysql> SHOW VARIABLES LIKE '%log_output%';+---------------+-------+
| Variable_name | VALUE |
+---------------+-------+
| log_output | TABLE |
+---------------+-------+
1 ROW IN SET (0.00 sec)
八、从表中查询慢查询语句
SELECT * FROM mysql.slow_log;
九、执行慢查询语句
SELECT SLEEP(3);
SLEEP(3)为等待3秒
十、查询慢查询的sql语句
SELECT * FROM mysql.slow_log l ORDER BY l.`start_time` DESC;
十一、查看慢查询语句的数量
SHOW GLOBAL STATUS LIKE '%Slow_queries%';
mysql> SHOW GLOBAL STATUS LIKE '%Slow_queries%';+---------------+-------+
| Variable_name | VALUE |
+---------------+-------+
| Slow_queries | 2 |
+---------------+-------+
1 ROW IN SET (0.00 sec)
十二、未使用索引的查询也记录到慢查询
SHOW VARIABLES LIKE 'log_queries_not_using_indexes';
开启了这个参数,其实使用full index scan的SQL也会被记录到慢查询日志。
mysql> SHOW VARIABLES LIKE 'log_queries_not_using_indexes';+-------------------------------+-------+
| Variable_name | VALUE |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF |
+-------------------------------+-------+
1 ROW IN SET (0.00 sec)
开启未使用索引的查询也记录到慢查询
SET GLOBAL log_queries_not_using_indexes=1;
================================
©Copyright 蕃薯耀 2020-11-27
https://www.cnblogs.com/fanshuyao/