slow query log
慢查询日志(slow query log
):用来记录在 MySQL 中执行时间超过指定时间的查询语句,在 SQL 优化过程中会经常使用到。通过慢查询日志,可以查找出哪些查询语句的执行效率低,耗时严重。
出于性能方面的考虑,一般只有在排查慢 SQL、调试参数时才会开启,默认情况下,慢查询日志功能是关闭的。可以通过以下命令查看是否开启慢查询日志:
mysql> SHOW VARIABLES LIKE 'slow_query%';
+---------------------+--------------------------------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /usr/local/mysql/data/iZ2zebfzaequ90bdlz820sZ-slow.log |
+---------------------+--------------------------------------------------------+
通过如下命令开启慢查询日志后,可以发现 iZ2zebfzaequ90bdlz820sZ-slow.log
日志文件里并没有内容,可能因为执行的 SQL 都比较简单没有超过指定时间。
mysql> SET GLOBAL slow_query_log=ON;
Query OK, 0 rows affected
上边提到超过指定时间的查询语句才算是慢查询,那么这个时间阈值又是多少呢?通过 long_query_time
参数来查看一下,发现默认是 10 秒。
mysql> SHOW VARIABLES LIKE 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
这里将 long_query_time
参数改小为 0.001秒再次执行查询 SQL,看看慢查询日志里是否有变化。
mysql> SET GLOBAL long_query_time=0.001;
Query OK, 0 rows affected
果然再执行 SQL 的时,执行时间大于0.001秒,发现慢查询日志开始记录了。