MySQLにはパフォーマンスの悪いクエリ(レスポンスを返すまでに一定以上の時間がかかるクエリ)をログに残してくれるSlow Query Logという、MySQLを利用したシステムをチューニングする際には非常に重要でありがたい機能があります。
ただ、あまりにも膨大なログを目の前にして、
「・・・これは解析ツールでもつくるしかないなぁ・・・」
と思っていましたが、探してみたらやっぱりありました。
MySQLのSlow Query Logを分析してくれるツール「MySQA」
http://sourceforge.net/projects/mysqa/
ちょっと使ってみましたが、とてもシンプルなGUIでさくさく使えていい感じです。 Javaで書かれているのでどんなプラットフォームでも使えるのもうれしい限りです。集計してくれる内容ですが、 おなじクエリ(Where句等も解析してくれて条件の値が違うばあいでも一つのクエリと判断してくれる)ごとに、
・Time 平均時間
・Min 最小時間(ちょっとテストデータで試してみた感じでは正常に動作してないかも?)
・Max 最大時間
・Count クエリ数
・Rows Sent クライアントに送信された平均行数
・Rows Examined 検索対象となった平均行数
・LIKE Where句にLike文が含まれているか(推測、検証してないですw)
・ORDER BY Group by句が含まれているか(推測、検証してないですw)
といった項目を分析してくれます。
また、ログの日付でフィルタリングも可能です。(Min. Examinated RowsとMin. Query Timeは動作してないみたい・・・)
特にマニュアルとかもないですし、使い方を紹介してるサイトも発見できなかったので色々いじくってみた結果です。 どなたかもし使い方、集計の振る舞いについてご存じでしたら是非コメントをください。(この項目の意味まちがってる! とかのツッコミ大歓迎ですw)