当前位置:知识百科 > 正文

MySQL开启慢查询日志log-slow-queries的方法

更新时间:2025-12-19 15:48 阅读量:92

以下是MySQL开启慢查询日志log-slow-queries的方法的详细攻略:

1. 确认是否开启了慢查询日志

$ mysql -u root -p

SHOW VARIABLES LIKE "slow_query_log";

如果输出结果中的Value是ON,说明慢查询日志已经开启了,可以直接跳到下一步.如果输出结果中的Value是OFF,则需要对MySQL进行设置,开始慢查询日志功能.

2. 配置MySQL的慢查询日志

为了开始记录慢查询日志,需要进行以下配置:

2.1 配置慢查询阈值

首先,需要设置慢查询阈值.慢查询阈值是指执行时间超过多长时间的SQL查询语句将被记录到慢查询日志中.可以通过以下命令设置:

SET GLOBAL slow_query_log_threshold = 10;

以上命令将阈值设置为10秒.可以根据自己的需要进行调整.

2.2 配置慢查询日志文件

此时此刻呢,需要设置慢查询日志文件的存放位置和日志文件的名称.这可以通过在MySQL的配置文件my.cnf中添加以下内容来完成:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 10

这里的slow_query_log和long_query_time的值与前面设置的阈值相关.slow_query_log_file是慢查询日志文件的路径和名称,需要根据自己的情况进行修改.

3. 使用慢查询日志

设置完成后,MySQL将开始记录超过阈值时间的查询语句到慢查询日志中了.可以通过以下命令查看慢查询日志文件中的内容:

$ sudo tail -f /var/log/mysql/mysql-slow.log

这里的/var/log/mysql/mysql-slow.log是慢查询日志文件的路径和名称,需要根据自己的情况进行修改.

如果想要详细地分析查询语句的执行情况,可以使用一些慢查询日志分析工具,如Percona Toolkit等.

示例说明

以下是两个示例,演示如何使用MySQL的慢查询日志:

示例1:查看是否开启了慢查询日志

$ mysql -u username -p
Enter password:
> SHOW VARIABLES LIKE "slow_query_log";
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | OFF   |
+----------------+-------+
1 row in set (0.00 sec)

这里的Value是OFF,说明没有开启慢查询日志.

示例2:配置慢查询日志并查看查询结果

$ mysql -u username -p
Enter password:
> SET GLOBAL slow_query_log_threshold = 10;
Query OK, 0 rows affected (0.00 sec)
> SELECT SLEEP(11);
+-----------+
| SLEEP(11) |
+-----------+
|         0 |
+-----------+
1 row in set (11.01 sec)

因为SELECT SLEEP(11)的执行时间超过了10秒钟,所以这个查询将被记录到慢查询日志中.可以通过tail命令查看慢查询日志文件:

$ sudo tail -f /var/log/mysql/mysql-slow.log
# Time: 2022-06-19T16:23:26.958544Z
# User@Host: root[root] @ localhost []  Id:    13
# Query_time: 11.003210  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1655741006;
SELECT SLEEP(11);

好了,全部的MySQL开启慢查询日志的方法,希望能对你有所帮助.