mysql慢查询,mysql慢查询日志

mysql慢查询,mysql慢查询日志

 

================================

©Copyright 蕃薯耀 2020-11-27

https://www.cnblogs.com/fanshuyao/

 

一、配置文件设置慢查询,永久有效,一般不设置,只需要启动慢查询1、2天就行

# 启动慢查询
slow_query_log=1

#不设置的话,默认为创建一个日志文件:C:\ProgramData\MySQL\MySQL Server 5.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 VARIABLES LIKE 'long_query_time';

#或 
#(下面为全局的,不需要新创建会话)
SHOW GLOBAL VARIABLES LIKE 'long_query_time';
mysql> SHOW VARIABLES LIKE 'long_query_time';
+-----------------+-----------+
| Variable_name   | VALUE     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 ROW IN SET (0.00 sec)


mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time';
+-----------------+-----------+
| Variable_name   | VALUE     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 ROW IN SET (0.00 sec)

#修改慢查询时间之后
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/

posted @ 2020-11-27 16:55  蕃薯耀  阅读(192)  评论(0编辑  收藏  举报