MySQL开启慢查询日志以及慢查询日志分析

mysql满查询有助于让我们发现系统中瓶颈所在。

开启方法

默认情况满查询应该关闭,如果需要分析则需要手动开启。

mysql> show variables like '%slow_query_log%';
 +---------------------+--------------------------------------+
 | Variable_name       | Value                                |
 +---------------------+--------------------------------------+
 | slow_query_log      | OFF                                  |
 | slow_query_log_file | /var/lib/mysql/01f03cd2e279-slow.log |
 +---------------------+--------------------------------------+
 2 rows in set (0.01 sec)

开启慢查询语句如下

mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.00 sec)

使用set global slow_query_log=1开启了慢查询日志只对当前数据库生效,MySQL重启后则会失效。如果需要永久开启则需要修改配置,不过大部分情况也用不着,这里就不介绍了

开启了之后还需要设置一个时间限制,超过多少时间我们才记录呢?这个配置值是long_query_time

设置慢查询超时时间

mysql> show variables like 'long_query_time%';
 +-----------------+-----------+
 | Variable_name   | Value     |
 +-----------------+-----------+
 | long_query_time | 10.000000 |
 +-----------------+-----------+
 1 row in set (0.01 sec)

可以看到默认情况是10s,通常会修改这个值。改成0.5s试试

mysql> set global long_query_time=0.5;
Query OK, 0 rows affected (0.00 sec)

请注意,设置之后需要重新开启会话才能看到效果。再次查看还是原来的值。

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

mysql> set global slow_query_log_file="日志存放的位置";

日志存放的位置mysql必须有可写的权限,否则会出现

ERROR 1231 (42000): Variable 'slow_query_log_file' can't be set to the value of...

怎么查看

这个参数用于指定慢查询日志的存放路径,缺省情况是host_name-slow.log文件

mysql> show variables like 'slow_query_log_file';
 +---------------------+--------------------------------------+
 | Variable_name       | Value                                |
 +---------------------+--------------------------------------+
 | slow_query_log_file | /var/lib/mysql/01f03cd2e279-slow.log |
 +---------------------+--------------------------------------+
 1 row in set (0.00 sec)

这个文件记录了慢查询,可以打开该文件查看慢查询日志。

如何验证

select sleep(3)

之后查看slow_query_log_file里面有没有慢查询日志。

赞赏

微信赞赏支付宝赞赏

其他

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注