1. 程式人生 > >19. pt-query-digest

19. pt-query-digest

 


慢查詢
引數
slow_query_log=1
slow_query_log_file=/mysql3306/log/slow.log

記錄的是查詢語句,而非管理語句。除非啟用 los_slow_admin_statements
記錄時間達到long_query_time或者符合log_queries_not_using_indexes
查詢記錄量達到min_examined_row_limit
查詢語句不違反log_throttle_queries_not_using_indexes


percona工具分析slow-log

yum -y install perl-DBD-MySQL perl-devel
tar xzvf percona-toolkit-2.2.17.tar.gz
cd percona-toolkit-2.2.17
perl Makefile.PL
make && make test && make install


echo 'export PATH=/usr/local/pt2217/bin:$PATH' >>/etc/profile
source /etc/profile

 


1. pt-query-digest分析慢查詢日誌
pt-query-digest --report /opt/mysql3306/data/slow.log>/tmp/pt-slow.txt

2. 報告最近半個小時的慢查詢:
pt-query-digest --report --since 1800s /opt/mysql3306/data/slow.log>/tmp/pt-slow.txt

3. 報告一個時間段的慢查詢:
pt-query-digest --report --since '2016-07-1 00:00:00' --until '2016-07-20 00:00:00' /opt/mysql3306/data/slow.log>/tmp/pt-slow.txt

4. 報告只含select語句的慢查詢:
pt-query-digest --filter '$event->{fingerprint} =~m/^select/i' /opt/mysql3306/data/slow.log>/tmp/pt-slow.txt

5. 報告針對某個使用者的慢查詢:
pt-query-digest --filter '($event->{user} || "") =~m/^omsdb/i' /opt/mysql3306/data/slow.log>/tmp/pt-slow.txt

6. 報告所有的全表掃描或full join的慢查詢:
pt-query-digest --filter '(($event->{Full_scan} || "") eq "yes") || (($event->{Full_join} || "") eq "yes")' /opt/mysql3306/data/slow.log>/tmp/pt-slow.txt

 

閱讀分析報告


Overall: 總共有多少條查詢,上例為總共1.29m個查詢。
Time range: 查詢執行的時間範圍。
unique: 唯一查詢數量,即對查詢條件進行引數化以後,總共有多少個不同的查詢,該例為1.31k。
total: 總計 min:最小 max: 最大 avg:平均
95%: 把所有值從小到大排列,位置位於95%的那個數,這個數一般最具有參考價值。
median: 中位數,把所有值從小到大排列,位置位於中間那個數。

–Exec time:語句執行時間
–Lock time:鎖佔有時間
–Rows sent:傳送到客戶端的行數
–Row examine:掃描的行數(SELECT語句)
–Row affecte:傳送改變的行數(UPDATE, DELETE, INSERT語句)
–Bytes sent:傳送多少bytes的查詢結果集
–Query size:查詢語句的字元數