mysqlで動いているSQLのチューニング

社内で別の人が担当しているweb系のアプリで、サーバでの処理が遅くブラウザがタイムアウトする場合がある。オンラインバッチな機能なので排他制御が足りなく、ブラウザを一度終了させると処理中にも関わらず再実行できてしまう。


今は排他制御の強化とオンラインバッチをコンカレント処理にして対応する予定。でも、topで見ていると処理中はmysqldにCPUが張り付きっぱなし。まずは、これが先なんじゃないか。とも思う。


テストをするにもだらだらと待つので退屈。なのでSQLの性能改善にチャレンジ。Oracleではそれなりに場数を踏んでいるものの、MySQLは初めて。アプリの中は理解していないので、MySQLから遅いSQL文を探す方法を探す事から開始。


とっかかりとしてはMySQLが遅いSQL文を報告してくれるのでそれを解析することから。
http://dev.mysql.com/doc/refman/4.1/ja/slow-query-log.html