mysqlslowdump

$ 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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です