percona toolsのpt-query-digest


1.ツールの概要
pt-query-digestはmysqlの遅いクエリーを分析するためのツールで、binlog、General log、slowlogを分析したり、SHOWPROSCESSLISTやtcpdumpでキャプチャしたMySQLプロトコルデータを分析したりすることができます.分析結果をファイルに出力することができ、分析過程はまずクエリー文の条件をパラメータ化し、それからパラメータ化後のクエリーをグループ統計し、各クエリーの実行時間、回数、割合などを統計し、分析結果を借りて問題を見つけて最適化することができる.
pt-query-digestはperlスクリプトで、ダウンロードして権限を与えるだけで実行できます.
[root@test1 ]# wget percona.com/get/pt-query-digest [root@test1 ]# chmod u+x pt-query-digest
 
2.       
pt-query-digest [OPTIONS] [FILES] [DSN]

--create-review-table--reviewパラメータを使用して分析結果をテーブルに出力すると、テーブルがなければ自動的に作成されます.--create-history-table--historyパラメータを使用して分析結果をテーブルに出力すると、テーブルがなければ自動的に作成されます.--filterは入力された遅いクエリを指定した文字列で一致フィルタリングしてから分析します.limitは出力結果のパーセントまたは数を制限し、デフォルト値は20で、最も遅い20文の出力を制限します.50%であれば、総応答時間の割合が大きいから小さいまでソートし、合計50%の位置まで出力します.--host MySQLサーバーアドレス--user mysqlユーザー名--password mysqlユーザーパスワード--history分析結果を表に保存し、分析結果は比較的詳細で、次回--historyを使用する場合、同じ文が存在し、クエリが存在する時間区間と履歴表の違いはデータ表に記録されます.同じCHECKSUMを問い合わせることで、あるタイプのクエリの履歴の変化を比較できます.--reviewは分析結果を表に保存します.この分析はクエリー条件をパラメータ化するだけで、1つのタイプのクエリーは1つの記録で、比較的簡単です.次に--reviewを使用する場合、同じ文解析が存在する場合、データテーブルには記録されません.--output分析結果出力タイプ.値はreport(標準分析レポート)、slowlog(Mysql slow log)、json、json-anonであり、一般的にreportを使用して読みやすい.--sinceはいつから解析を開始しますか.値は文字列で、指定した「yyyy-mm-dd[hh:mm:ss]」形式の時点であってもよいし、s(秒)、h(時間)、m(分)、d(日)の簡単な時間値であってもよい.12 hは12時間前から統計を表す.--untilの締め切り時間、およびsinceは、一定期間の遅いクエリーを分析します.
3.                  :      ,   
 
Overall:         ,     266   。Time range:          。unique:       ,             ,           ,   55。total:      min:     max:     avg:  95%:           ,    95%    ,            。median:    ,          ,         。    :        ,   
     ,              ,                ,        ,      。Response:       。time:                。calls:     ,                    。R/Call:            。Item :         :            ,   :
     ,12          ,             、  、  、  、95%       。Databases:   Users:          (  )Query_time distribution :       ,         ,   1s-10s       10s     。Tables:         Explain:   
 
4.    
pt-query-digest  slow.log > slow_report.log

pt-query-digest  --since=12h  slow.log > slow_report2.log
(3)指定した時間範囲内のクエリーを分析する:
pt-query-digest slow.log --since '2014-04-17 09:30:00' --until '2014-04-17 10:00:00'>> slow_report3.log
(4)分析はselect文を含む遅いクエリpt-query-digest--filter'$event->{fingerprint}=~m/^select/i'slowを指す.log> slow_report4.log(5)あるユーザに対する遅いクエリpt-query-digest--filter'($event->{user}|")=~m/^root/i'slow.log> slow_report5.log(6)すべての全テーブルスキャンまたはfull joinの遅いクエリーpt-query-digest--filter'(($event->{Full_scan}|")eq"yes")|(($event->{Full_join}|")eq"yes")slow.log> slow_report6.log(7)クエリーをquery_に保存reviewテーブルpt-query-digest--user=root–password=abc 123--review h=localhost,D=test,t=query_review--create-review-table  slow.log
(8)クエリーをquery_に保存するhistoryテーブルpt-query-digest--user=root–password=abc 123--review h=localhost,D=test,t=query_history--create-review-table  slow.log_20140401pt-query-digest  --user=root –password=abc123--review  h=localhost,D=test,t=query_history--create-review-table  slow.log_20140402(9)tcpdumpによりmysqlのtcpプロトコルデータをキャプチャし、その後、tcpdump-s 65535-x-nn-q-tttttt-i any-c 1000 port 3306>mysqlを分析する.tcp.txtpt-query-digest --type tcpdump mysql.tcp.txt> slow_report9.log(10)分析binlogmysqlbinlog mysql-bin.000093 > mysql-bin000093.sqlpt-query-digest  --type=binlog  mysql-bin000093.sql > slow_report10.log(11)分析general logpt-query-digest--type=genlog localhost.log > slow_report11.log
 
公式ドキュメント:http://www.percona.com/doc/percona-toolkit/2.2/pt-query-digest.html