wait_timeout

estis2009/08/07 (金) 16:38 に投稿

MySQLのシステム変数のwait_timeoutを、mysqlコマンドで接続して確認すると、my.cnfで変更していても、
show variables では変更されていないように見える。
しかし、
show global variables で確認すれば変更されているのがわかる。
システム変数には、グローバル変数とセッション変数の2種類があるのだ。
http://ftp.cc.uoc.gr/mirrors/mysql/doc/refman/5.1/ja/using-system-varia…
そして、セッション変数のwait_timeoutは、グローバルのwait_timeout値か、interactive_timeout値かのどちらかになるが、それはクライアントのタイプによるとのこと。
http://ftp.cc.uoc.gr/mirrors/mysql/doc/refman/5.1/ja/server-system-vari…

つまり、my.cnfに
[mysqld]
wait_timeout = 600
interactive_timeout = 700
とあると、

mysql> show variables like '%timeout%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| connect_timeout            | 10    | 
| delayed_insert_timeout     | 300   | 
| innodb_lock_wait_timeout   | 50    | 
| innodb_rollback_on_timeout | OFF   | 
| interactive_timeout        | 700   | 
| net_read_timeout           | 30    | 
| net_write_timeout          | 60    | 
| slave_net_timeout          | 3600  | 
| table_lock_wait_timeout    | 50    | 
| wait_timeout               | 700   | 
+----------------------------+-------+
10 rows in set (0.00 sec)

mysql> show global variables like '%timeout%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| connect_timeout            | 10    | 
| delayed_insert_timeout     | 300   | 
| innodb_lock_wait_timeout   | 50    | 
| innodb_rollback_on_timeout | OFF   | 
| interactive_timeout        | 700   | 
| net_read_timeout           | 30    | 
| net_write_timeout          | 60    | 
| slave_net_timeout          | 3600  | 
| table_lock_wait_timeout    | 50    | 
| wait_timeout               | 600   | 
+----------------------------+-------+
10 rows in set (0.00 sec)

となる。
show variables は、global を明示しないとセッション値を返す。
mysqlコマンドは、 interactive_timeoutグローバル値を、wait_timeoutセッション値にする。