启慢查询日志,可以让MySQL记录下查询超过指定时间的语句。
通过定位分析性能的瓶颈,可以更好的优化数据库系统的性能。这是常用的MySQL性能优化方式。精准定位到慢查询语句,可以快速解决问题。

同时,有时候也需要监控所有Sql的执行,我们可以开启Mysql的日志,记录所有的Sql语句,方便排查问题。

记录所有Sql

1
show variables like "%general_log%";

设置

1
2
3
4
5
set general_log=on;
//提示
ERROR 1229 (HY000): Variable 'general_log' is a GLOBAL variable and should be set with SET GLOBAL

set global general_log=on;

再次查看

开启 慢查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> show variables like 'slow_query%';
+---------------------------+----------------------------------+
| Variable_name | Value |
+---------------------------+----------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /mysql/data/localhost-slow.log |
+---------------------------+----------------------------------+

mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+

开启

在Mysql命令行操作
slow_query_log 全局变量设置为ON状态

1
set global slow_query_log='ON'; 

设置慢查询日志存放的位置

1
2
set global slow_query_log_file='/usr/local/mysql/data/slow.log';

查询超过1秒就记录

1
set global long_query_time=1;

查看

1
show variables like 'slow_query%';

测试

1
select sleep(2);

查看日志

1
ls  /usr/local/mysql/data/slow.log

如果日志存在,MySQL开启慢查询设置成功!