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

nav*_*nam 25 mysql mysql-slow-query-log

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

set GLOBAL long_query_time=1; 
Run Code Online (Sandbox Code Playgroud)

经过上面的操作再次尝试了

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

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

gee*_*vdk 55

您正在设置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 |
+-----------------+-----------+
Run Code Online (Sandbox Code Playgroud)


小智 5

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

该更改将持续到服务器重新启动、后续更改或会话过期为止。

请参阅http://bugs.mysql.com/bug.php?id=38704了解更多详细信息