Mysql 慢查询日志

时间:2022-09-16 10:08:57

慢查询日志在日常的数据库性能分析中非常常用,在业务高峰期进行样本收集,找出性能低下的sql语句非常高效。


Mysql开启慢查询日志

查询目前服务器的查询日志状态(示例服务器刚刚开启,没开启 slow_query_log应该为OFF)


mysql> show variables  like  '%slow%';
+---------------------+---------------------------------------------------------+
| Variable_name | Value |
+---------------------+---------------------------------------------------------+
| log_slow_queries | ON |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /data0/datadir/mysql/var/bj-fl-mysql-slave-002-slow.log |
+---------------------+---------------------------------------------------------+
4 rows in set (0.00 sec)



两种方式:


方式一:修改配置文件

修改my.cnf 

在[mysqld]标签下添加属性:

slow_query_log_file = /data0/dataDir/mysql/var/hostname-slow.log

long_query_time = 1


含义:

表示慢查询日志所放目录为  /data0/dataDir/mysql/var/hostname-slow.log

查询时间高于1秒的查询全部纪录到慢查询日志中。

重启mysql生效。


方式二:在线开启

通过在线修改全局变量进行设置。

  1. mysql > set global slow_query_log=1;
  2. mysql > set global long_query_time=2;
  3. mysql > set global slow_query_log_file='/data0/dataDir/mysql/var/hostname-slow.log';

设置之后慢查询生效。



关闭慢查询日志功能


关闭慢查询日志也比较简单,

分别注释掉my.cnf中[mysqld]添加的

slow_query_log_file = /data0/dataDir/mysql/var/hostname-slow.log

long_query_time = 1

之后重启mysql。


或者在线进行关闭

mysql > set global slow_query_log=0;

在线关闭。