33

我正在使用 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 控制台它没有得到改变,为什么?

4

2 回答 2

67

您正在设置一个 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 |
+-----------------+-----------+

MySQL 8.0 引入了SET PERSIST ..有助于持久化动态设置的配置的语法。请参阅MySQL 8.0 手册

于 2013-03-21T07:31:54.623 回答
5

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

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

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

于 2013-03-21T07:25:36.203 回答