2013-03-21 51 views
22

我正在使用MySQL版本5.1.66。我看到long_query_time變量是動態的,但是當我試圖爲什麼我無法在運行時更改變量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控制檯它是沒有得到改變,爲什麼呢?

回答

42

您設置一個全球性的系統變量,但你查詢會話變量。爲使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 | 
+-----------------+-----------+ 
+0

謝謝可變long_query_time時間,所以我知道,當我們嘗試顯示變量像「long_query_time」它正在顯示會話變量 – 2013-03-21 07:35:29

+0

非常真實,我沒有想到這一點。謝謝 – 2017-04-11 14:43:32