$ mysqldumpslow -s t スローログファイル
結果の例
Count: 769 Time=0.02s (16s) Lock=0.00s (0s) Rows=5.0 (3827), dbt[dbt]@localhost SELECT STRAIGHT_JOIN i_id, i_title, a_fname, a_lname FROM item, author WHERE i_title LIKE 'S' AND i_a_id = a_id ORDER BY i_title ASC LIMIT N Count: 1271 Time=0.01s (8s) Lock=0.00s (0s) Rows=50.0 (63550), dbt[dbt]@localhost SELECT i_id, i_title, a_fname, a_lname FROM item, author WHERE i_subject = 'S' AND i_a_id = a_id ORDER BY i_pub_date DESC, i_title ASC LIMIT N Count: 49040 Time=0.00s (5s) Lock=0.00s (0s) Rows=1.8 (86230), dbt[dbt]@localhost # Count: 710 Time=0.01s (4s) Lock=0.00s (0s) Rows=44.4 (31500), dbt[dbt]@localhost SELECT i_id, i_title, a_fname, a_lname FROM item, author WHERE i_subject = 'S' AND i_a_id = a_id ORDER BY i_title ASC LIMIT N Count: 6916 Time=0.00s (3s) Lock=0.00s (0s) Rows=5.0 (34520), dbt[dbt]@localhost SELECT i_id,i_thumbnail FROM item WHERE i_id = (SELECT i_related1 FROM item WHERE i_id = N) OR i_id = (SELECT i_related2 FROM item WHERE i_id = N) OR i_id = (SELECT i_related3 FROM item WHERE i_id = N) OR i_id = (SELECT i_related4 FROM item WHERE i_id = N) OR i_id = (SELECT i_related5 FROM item WHERE i_id = N)
サーバで実行されたすべてのSQLが種類別に集計され、合計時間の悪いものから順番にレポートされています。あとはこれを上から順に直していけば良いというわけです。
特に、MySQL 5.1では1回の実行には0.01秒しかかからないが、毎分1万回実行されるので実は負荷の大半を占めている、といったSQLを簡単に特定できるようになった
合計時間でスローログを検討できるのはいいね。
参考:http://d.hatena.ne.jp/sh2/20090414