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>