知乎专栏 |
参数说明如下:
slow_query_log: 慢查询开启状态 slow_query_log_file: 慢查询日志存放的位置(默认设置为 MySQL 的数据存放目录) long_query_time: 查询超过多少秒才记录
慢查询日志状态
mysql> show variables like '%slow_query_log%'; +---------------------+-----------------------------------+ | Variable_name | Value | +---------------------+-----------------------------------+ | slow_query_log | ON | | slow_query_log_file | /var/lib/mysql/netkiller-slow.log | +---------------------+-----------------------------------+ 2 rows in set (0.00 sec)
set global log_output='TABLE'; -- 开启慢日志,纪录到 mysql.slow_log 表 set global long_query_time=10; -- 设置超过10秒的查询为慢查询 set global slow_query_log='ON'; -- 打开慢日志记录
查询慢的 sql 日志
select convert(sql_text using utf8) sql_text from mysql.slow_log
关闭慢查询日志
set global slow_query_log='OFF'; -- 排查完毕后记得关闭日志
mysql> SHOW VARIABLES LIKE 'slow_query%'; +---------------------+-----------------------------------+ | Variable_name | Value | +---------------------+-----------------------------------+ | slow_query_log | OFF | | slow_query_log_file | /var/lib/mysql/netkiller-slow.log | +---------------------+-----------------------------------+ 2 rows in set (0.00 sec) mysql>
mysql> SHOW VARIABLES LIKE 'long_query_time'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.01 sec)
mysql> SET GLOBAL slow_query_log=ON; Query OK, 0 rows affected (0.05 sec) mysql> SET GLOBAL long_query_time=0.001; Query OK, 0 rows affected (0.00 sec)
[mysqld] log-slow-queries = /var/lib/mysql/netkiller-slow.log long_query_time = 10