2010/11/13

Maatkit の mk-kill で SELECT だけを殺す

どうもこんばんは。 MySQL さっぱりわからないクズです。

いまいちクエリ改善できなくて、ヘタに検索すると刺さっちゃったりするシステム作ってしまった訳なんですけど、大人の事情でサーバのメモリ増設とかすんなり出来なかったりしてどうしようかなって状態だったりするんですが、とりあえず刺さったクエリを自動で殺す方法探したら Maatkit に含まれる mk-kill 使うのが一番手頃みたいだし cron*1 に仕込んでおいた。

$ mk-kill -kill-query --busy-time 1m

これで実行されてから1分以上経過したクエリが自動で殺されます。よかったよかった…なんですが、ALTER TABLE とかパーティションの更新とかもこれだと対象にされちゃうので、SELECT のみに限定したい場合は

$ mk-kill -kill-query --match-info SELECT --busy-time 1m

--match-info でパターンを指定してやればいいみたい。 info ってのがぱっと見だとわかりずらいけど、show processlist の info の部分ってことみたい。

ぜんぜんわかんないことばかりで悲しいんだけど、Maatkit 便利だしいろいろ試したい。

余談だけど、パーティションって2日先まで作って更新してくのがいいよね?とりあえず問題は出てないしデメリットも思いつかないから、このままでいくけど。。

*1: --daemonize のオプション指定してみたけどちゃんと動かなかった。 pid 指定してみても駄目。何かに依存してるのかな。

blog comments powered by Disqus