mysql慢查询,mysql慢查询日志
================================
©Copyright 蕃薯耀 2020-11-27
https://www.cnblogs.com/fanshuyao/
一、配置文件设置慢查询,永久有效,一般不设置,只需要启动慢查询1、2天就行
# 启动慢查询 slow_query_log=1 #不设置的话,默认为创建一个日志文件:C:ProgramDataMySQLMySQL Server 5.5datahost_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:ProgramDataMySQLMySQL SERVER 5.5DATAxxx-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:ProgramDataMySQLMySQL SERVER 5.5DATAxxx-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/