为什么我无法在运行时更改变量long_query_time变量

时间:2013-03-21 07:19:36

标签: mysql mysql-slow-query-log

我使用的是MySQL 5.1.66版。我看到long_query_time变量是动态的,但是当我尝试

set GLOBAL long_query_time=1; 

再次执行上述操作后,我尝试了

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

从mysql控制台它没有被改变,为什么?

2 个答案:

答案 0 :(得分:51)

您正在设置GLOBAL系统变量,但是您要查询SESSION变量。要使GLOBAL变量设置对当前会话生效,您需要重新连接或设置@@ SESSION.long_query_time变量。 (请注意,SHOW VARIABLES默认显示会话变量。)

以下是一个例子:

mysql> SHOW SESSION VARIABLES LIKE "long_query_time";
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+

mysql> SET @@GLOBAL.long_query_time = 1;

mysql> SHOW GLOBAL VARIABLES LIKE "long_query_time";
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+

mysql> SHOW VARIABLES LIKE "long_query_time";
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+

答案 1 :(得分:3)

更改mysql中的系统变量值(cfr。http://dev.mysql.com/doc/refman/5.1/en/set-statement.html)不会改变已连接到会话的客户端的值。

更改将持续到服务器重新启动,后续更改或会话到期。

请参阅http://bugs.mysql.com/bug.php?id=38704了解详情