MySQL4系の罠 query interrupt
MySQLで、モニタから適当にクエリ投げている時
「あっ、これは返ってこないな」とおもってCtrl+Cでクエリ実行を中断することがある。
業務で初めてつかったのはMySQL5.1で、そういう手段は特に問題はなかった。
レガシーな保守をすることになって業務では初めてMySQLで4.0を触った。
これで同様なことをするとCtrl+Cは実はモニタを抜けるだけで、クエリは実行されたままだ。
しかもストレージエンジンがMyISAMで、書き込みが多く走るテーブルの場合。。。
- 重いクエリを投げる
- 共有ロックがかかる(read only)
- 更新クエリがたまる
- (さらにクエリがたまると) コネクションの上限に達する
- Webサーバーからアクセスできなくなる
- フロントがテンポる^0^
[対策]
一度モニタを抜け、重いプロセスを確認
show processlist;
プロセスKill
kill 12345;
これで一応大丈夫。
※Killするときは間違って他のプロセスを切断しないこと
(特にReplicationのI/Oスレッド、クエリスレッド)