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里面有没有慢查询日志。
赞赏