Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | Github | OSChina 博客 | 腾讯云社区 | 阿里云栖社区 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏多维度架构

20.10. MySQL慢查询日志(Slow Query Log)

参数说明如下:

	
slow_query_log:			慢查询开启状态
slow_query_log_file:	慢查询日志存放的位置(默认设置为 MySQL 的数据存放目录)
long_query_time:		查询超过多少秒才记录
	
	

20.10.1. MySQL 8.x

慢查询日志状态

		
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'; -- 排查完毕后记得关闭日志		
		
		

20.10.2. MySQL 5.x

20.10.2.1. 查看设置

	
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)	
	
			

20.10.2.2. 开启慢查询日志

		
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)		
		
			

20.10.2.3. 配置慢查询日志

		
[mysqld]
log-slow-queries 		= /var/lib/mysql/netkiller-slow.log
long_query_time 		= 10
		
			

20.10.2.4. 删除慢查询日志

执行命令后将清空旧慢查询日志,写入新日志

		
mysqladmin -uroot -p flush-logs