mysql-慢查询-开启与设置

在mysql中可以开启慢查询日志,来使mysql自动记录那些执行时间超过设定的阀值的sql语句,从而方便我们进行针对性的优化。
开启慢查询日志
在mysql中,慢查询日志默认是关闭的。

mysql> show variables like "log_slow%";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| log_slow_queries | OFF   |
+------------------+-------+
1 row in set (0.00 sec)

那首先要做的就是将慢查询日志记录这个功能打开。

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

好了,这样就把慢查询功能打开了。
还有一条warning,看一下是什么东西。

mysql> show warnings;
+---------+------+-----------------------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                                               |
+---------+------+-----------------------------------------------------------------------------------------------------------------------+
| Warning | 1287 | The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead |
+---------+------+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

噢,原来是告诉我们”log_slow_queries“这个变量将被移除了,以后要使用”slow_query_log“进行替代,挺好,这个新的更贴合一些。
看一下这个新的变量情况。

mysql> show variables like "slow_query_log";
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | ON    |
+----------------+-------+
1 row in set (0.00 sec)

OK,功能开启了之后,就需要设置查询时间的阀值了,这个阀值表示超过这个时间的sql查询,就会被记录到慢查询日志文件中。

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

mysql中这个阀值默认的设置是10秒,这实在是太太太太长了,修改一下,对我们来说,超过1秒的,基本就需要观察一下了。(如果你把这个值设置为0,那所有的查询都将会被记录,不过这样通常没有什么意义)

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

OK,将阀值设置为1秒了,这样只要超过这个阀值的查询,就会被记录到日志中了。
可能有的同学要问了,这个慢查询日志是在哪里呀,可以从系统中看到。

mysql> show variables like "slow%";
+---------------------+----------------------------------------+
| Variable_name       | Value                                  |
+---------------------+----------------------------------------+
| slow_launch_time    | 2                                      |
| slow_query_log      | ON                                     |
| slow_query_log_file | /var/lib/mysql/****-slow.log |
+---------------------+----------------------------------------+
3 rows in set (0.00 sec)

slow_query_log_file指明了慢查询日志所在的具体位置。

你可能感兴趣的:(mysql)