web-dev-qa-db-ja.com

実行時に変数long_query_time変数を変更できなかった理由

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コンソールから変更されていません、なぜですか?

27
neotam

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 |
+-----------------+-----------+
54
geertjanvdk

Mysqlでシステム変数値を変更しても(cfr。 http://dev.mysql.com/doc/refman/5.1/en/set-statement.html )、すでに接続されているクライアントの値は変更されませんセッションに。

変更は、サーバーの再起動、その後の変更、またはセッションの有効期限が切れるまで続きます。

詳細は http://bugs.mysql.com/bug.php?id=38704 を参照してください

3
shola