Road To Nowhere

主にWebまわりのエンジニア的なお仕事に関するようなことのあれこれ。

SHOW VARIABLESにはGLOBALとSESSIONがある

おそらくMySQL使いの人にとっては常識だと思うけど、ちょいはまったのでメモ。


MySQLの設定値(変数)を見るときに使うSHOW VARIABLESにはSESSIONとGLOBALの2種類がある。
そんでもって、SESSIONもGLOBALも指定しない場合はSESSIONから値をとってくるとのこと。
http://ftp.ku.ac.th/pub/mirror/mysql/doc/refman/5.1/ja/using-system-variables.html


さて何にはまったかというと、MySQLコマンドラインからSET GLOBALで設定値を変更後、
SHOW VARIABLESで設定値を確認すると値が変わってないわけです。
なんじゃろということで、数分あたふたして同僚に泣きつくと「変わってるよ」と。
気を取り直して、MySQLコマンドラインに入り直してSHOW VARIABLESすると確かに変わってる。


そこでgoogle先生に聞くとSHOW VARIABLESにはSESSIONとGLOBALがあると。
SHOW GLOBAL VARIABLESでSET GLOBAL直後でも変更を確認できるわけだ。

以下、参考までに。

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

 mysql> set global long_query_time=2;
 Query OK, 0 rows affected (0.00 sec)

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

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

 mysql>