slow query log

MySQLには、slow query log という種類のログがあって、その名のとおり遅いクエリのログである。クエリの処理に時間がかかったものが記録されている。クエリの性能改善には欠かせない機能の一つ、だと思う。自分の環境では、デフォルトでoffになっていたので、今日onにした。
確認方法は、mysqlクライアントで

$ show variables like 'log%'

で、log_slow_queries がOnなら有効、Offなら無効になっている。
Onにするには、Windowsはmy.ini、Linuxはmy.cnfの [mysqld] セクションに

log-slow-queries
long-query-time=2
log-long-format

とか書けばいい。これはどっかからコピペしてきた設定なので、ログの出力を色々カスタマイズしたい場合は、自分でリファレンスとか見ればいいと思う。

注意することは、スロークエリログには、純粋に「処理に時間がかかった」クエリが記録される。つまり、WHERE句がカオスになっていて、どう考えても処理が遅いクエリも記録されるが、そのとき何かのプログラムが暴走してリソースを占有し、単純にプログラムの実行速度自体が落ちていた場合のクエリも記録される。つまりは、スロークエリログで怪しいクエリをみつけたら、explainすればいいわけだね。
周知ですか、そうですか。Gaucheコンパイルの間暇だったから書いた。