この記事では主に MySQL スロークエリログの pt-query-digest 分析に関する関連情報を紹介します。記事内の紹介は非常に詳細であり、必要な方は以下を参照してください。 。 バー。
1. はじめに
pt-query-digest は、mysql のスロークエリを分析するためのツールであり、binlog、一般ログ、slowlog を分析でき、SHOWPROCESSLIST または tcpdump を通じて MySQL のプロトコル データをキャプチャすることもできます。分析。分析結果はファイルに出力できます。分析プロセスでは、まずクエリ ステートメントの条件をパラメータ化し、次にパラメータ化されたクエリに対してグループ統計を実行して、各クエリの実行時間、回数、割合を計算できます。分析 その結果、問題が特定され、最適化されます。
2.perlモジュールをインストールします方法1: rpmインストール
yum install -y perl-CPAN perl-Time-HiResツールのインストールディレクトリは次のとおりです。 方法 2: ソースコードのインストール
cd /usr/local/src wget percona.com/get/percona-toolkit.rpm yum install -y percona-toolkit.rpmツールのインストールディレクトリは: /usr/local/percona-toolkit/bin4. 各ツールの使い方の紹介
(1) スロークエリログ分析統計
cd /usr/local/src wget percona.com/get/percona-toolkit.tar.gz tar zxf percona-toolkit.tar.gz cd percona-toolkit-2.2.19 perl Makefile.PL PREFIX=/usr/local/percona-toolkit make && make install(2) サーバーの概要
pt-query-digest /usr/local/mysql/data/slow.log(3) サーバーディスクの監視
pt-summary(4) mysql サービスステータスの概要
pt-diskstats3. pt-query-digest 構文と重要なオプション
pt- query-digest [OPTIONS ] [FILES] [DSN]
パート 1: 全体的な統計結果
全体: 合計でクエリの数は何ですか? 時間範囲:クエリ実行
pt-mysql-summary -- --user=root --password=root
ランク: すべてのステートメントのランキング。デフォルトではクエリ時間で降順に並べ替えられ、--order-by で指定されます。
クエリ ID: ステートメントの ID、 (余分なスペースとテキスト文字を削除し、
ハッシュ値を計算します)
Response: 合計応答時間
Item:查询对象
# Profile # Rank Query ID Response time Calls R/Call V/M Item # ==== ================== ============= ===== ====== ===== =============== # 1 0xF9A57DD5A41825CA 2.0529 76.2% 1 2.0529 0.00 SELECT # 2 0x4194D8F83F4F9365 0.6401 23.8% 1 0.6401 0.00 SELECT wx_member_base
第三部分:每一种查询的详细统计结果
由下面查询的详细统计结果,最上面的表格列出了执行次数、最大、最小、平均、95%等各项目的统计。
ID:查询的ID号,和上图的Query ID对应
Databases:数据库名
Users:各个用户执行的次数(占比)
Query_time distribution :查询时间分布, 长短体现区间占比,本例中1s-10s之间查询数量是10s以上的两倍。
Tables:查询中涉及到的表
Explain:SQL语句
# Query 1: 0 QPS, 0x concurrency, ID 0xF9A57DD5A41825CA at byte 802 # This item is included in the report because it matches --limit. # Scores: V/M = 0.00 # Time range: all events occurred at 2016-11-22 06:11:40 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 50 1 # Exec time 76 2s 2s 2s 2s 2s 0 2s # Lock time 0 0 0 0 0 0 0 0 # Rows sent 20 1 1 1 1 1 0 1 # Rows examine 0 0 0 0 0 0 0 0 # Query size 3 15 15 15 15 15 0 15 # String: # Databases test # Hosts 192.168.8.1 # Users mysql # Query_time distribution # 1us # 10us # 100us # 1ms # 10ms # 100ms # 1s ################################################################ # 10s+ # EXPLAIN /*!50100 PARTITIONS*/ select sleep(2)\G
五、用法示例
1.直接分析慢查询文件:
pt-query-digest slow.log > slow_report.log
2.分析最近12小时内的查询:
pt-query-digest --since=12h slow.log > slow_report2.log
3.分析指定时间范围内的查询:
pt-query-digest slow.log --since '2017-01-07 09:30:00' --until '2017-01-07 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=abc123 --review h=localhost,D=test,t=query_review--create-review-table slow.log
8.把查询保存到query_history表
pt-query-digest --user=root –password=abc123 --review h=localhost,D=test,t=query_history--create-review-table slow.log_0001 pt-query-digest --user=root –password=abc123 --review h=localhost,D=test,t=query_history--create-review-table slow.log_0002
9.通过tcpdump抓取mysql的tcp协议数据,然后再分析
tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt pt-query-digest --type tcpdump mysql.tcp.txt> slow_report9.log
10.分析binlog
mysqlbinlog mysql-bin.000093 > mysql-bin000093.sql pt-query-digest --type=binlog mysql-bin000093.sql > slow_report10.log
11.分析general log
pt-query-digest --type=genlog localhost.log > slow_report11.log
总结
以上がMySQL のスロークエリログの pt-query-digest 分析の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。