MySQL 慢查询日志的配置使用
默认情况下slow_query_log的值为OFF,表示慢查询日志禁用。
mysql> show variables like '%slow_query_log%';
+---------------------+------------------------------------------+
| Variable_name | Value |
+---------------------+------------------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /data/mysql/bogon-slow.log |
+---------------------+------------------------------------------+
通过设置slow_query_log的值来开启:MySQL重启后会失效。
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.00 sec)
// MySQL重启后会失效。修改配置文件my.cnf永久生效修改my.cnf文件,增加或修改参数slow_query_log 和slow_query_log_file(慢查询日志文件的存放路径)
[mysqld]
slow_query_log=1
slow_query_log_file=/data/mysql/bogon-slow.log
开启慢查询日志后,由参数long_query_time控制SQL记录到慢查询日志里面,默认情况下long_query_time的值为10秒。
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
mysql> set global long_query_time=3;
Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like 'long_query_time';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 3.000000 |
+-----------------+----------+
查询慢查询记录条数
mysql> show global status like '%slow_queries%';
查看慢查询日志:less bogon-slow.log
[root@bogon mysql]# less bogon-slow.log
# Time: 2021-04-20T02:40:59.970785Z
# User@Host: root[root] @ localhost [127.0.0.1] Id: 22
# Query_time: 0.006356 Lock_time: 0.000192 Rows_sent: 409 Rows_examined: 818
SET timestamp=1618886459;
SELECT * FROM `index_whole` WHERE `cate` LIKE '%2%' ORDER BY `call_id` DESC;
- 慢查询语句的查询时间(query_time)
- 锁表时间(Lock_time)
- 返回客户端的行数(Rows_sent)
- 扫描过的行数(rows_examined)
- 导致慢查询的sql_text
参数log_output :指定日志的存储方式
FILE:将日志存入文件(默认)。
TABLE:将日志存入数据库,日志信息会被写入到mysql.slow_log表。
同时两种日志存储方式,配置以逗号隔开:log_output='FILE,TABLE'
mysql> show variables like '%log_output%';
mysql> set global log_output='FILE';
系统变量log-queries-not-using-indexes:未使用索引的查询也被记录到慢查询日志中
mysql> show variables like 'log_queries_not_using_indexes';
mysql> set global log_queries_not_using_indexes=1; // 开启
系统变量log_slow_admin_statements:是否将慢管理语句例如 ANALYZE TABLE 和 ALTER TABLE等记入慢查询日志
mysql> show variables like 'log_slow_admin_statements';