慢查询日志在日常的数据库性能分析中非常常用,在业务高峰期进行样本收集,找出性能低下的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生效。
方式二:在线开启
通过在线修改全局变量进行设置。
- mysql > set global slow_query_log=1;
- mysql > set global long_query_time=2;
- 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;
在线关闭。