このブログを検索

2011年3月4日金曜日

[MySQL]スローログクエリを調査する

パッケージに同梱されているmysqldumpslowはスローログクエリを調査するのに便利です。
オプションを付けないと、次のようにリテラル値が表示されなかったり実行順にされます。
$ mysqldumpslow /var/lib/mysql/sssdbmy01-slow.log

Reading mysql slow query log from /var/lib/mysql/sssdbmy01-slow.log
Count: 2  Time=6.96s (13s)  Lock=0.00s (0s)  Rows=5844505.0 (11689010), backup[backup]@localhost
  SELECT /*!N SQL_NO_CACHE */ * FROM `t01_quiz0_user_item1`

Count: 2  Time=3.31s (6s)  Lock=0.00s (0s)  Rows=2649981.0 (5299962), backup[backup]@localhost
  SELECT /*!N SQL_NO_CACHE */ * FROM `t01_quiz0_user_area1`
               :
よく使っているオプションは、-a(リテラル値の表示)、-g(パターンマッチング)、-s(ソート)です。
次の例は、リテラル値の表示、カラムitem_qtyで検索、クエリタイムの降順ソートです。
$ mysqldumpslow -a -g item_qty -s t /var/lib/mysql/sssdbmy01-slow.log 

Reading mysql slow query log from /var/lib/mysql/sssdbmy01-slow.log
Count: 1  Time=12.49s (12s)  Lock=0.00s (0s)  Rows=7.0 (7), quiz0001iuser[quiz0001iuser]@sssdev1.sss.examples.co.jp
  select item_qty,count(user_id) item_qty from t01_quiz0_user_item1 where item_qty<>99
  group by item_qty
  order by item_qty

Count: 1  Time=2.02s (2s)  Lock=0.00s (0s)  Rows=7.0 (7), quiz0001iuser[quiz0001iuser]@sssdev1.sss.examples.co.jp
  select distinct item_qty from t01_quiz0_user_item1

0 件のコメント:

コメントを投稿