MySQL4系の罠 query interrupt

MySQLで、モニタから適当にクエリ投げている時
「あっ、これは返ってこないな」とおもってCtrl+Cでクエリ実行を中断することがある。

業務で初めてつかったのはMySQL5.1で、そういう手段は特に問題はなかった。
レガシーな保守をすることになって業務では初めてMySQLで4.0を触った。


これで同様なことをするとCtrl+Cは実はモニタを抜けるだけで、クエリは実行されたままだ。

しかもストレージエンジンがMyISAMで、書き込みが多く走るテーブルの場合。。。

  1. 重いクエリを投げる
  2. 共有ロックがかかる(read only)
  3. 更新クエリがたまる
  4. (さらにクエリがたまると) コネクションの上限に達する
  5. Webサーバーからアクセスできなくなる
  6. フロントがテンポる^0^


[対策]
一度モニタを抜け、重いプロセスを確認

show processlist;

プロセスKill

kill 12345;

これで一応大丈夫。
※Killするときは間違って他のプロセスを切断しないこと
(特にReplicationのI/Oスレッド、クエリスレッド)