天天看點

Percona-Toolkit系列(20) --- pt-query-digestpt-query-digest

pt-query-digest

pt-query-digest:官方位址

說明

用途:用于分析日志、PROCESSLIST或TCPDUMP中的查詢。

pt-query-digest分析來自慢查詢、一般和二進制日志檔案的MySQL查詢。它還可以分析來自

SHOW PROCESSLIST

的查詢和來自tcpdump的MySQL協定資料。

會将相同的SQL語句進行分組,計算運作時間、設計資料量大小、平均運作時間等。

如:

# Profile
# Rank Query ID                   Response time     Calls  R/Call   V/M
# ==== ========================== ================= ====== ======== =====
#    1 0xFFFCA4D67EA0A78881303... 862601.1637 75.9% 227903   3.7849  7.75 COMMIT
#    2 0x88DF2BB1B9C880C808644...  21683.4226  1.9%     70 309.7632 21... SELECT B_MONITOR_ITEM B_WARN_ITEM B_MONITOR_ITEM B_WARN_ITEM B_MONITOR_ITEM B_WARN_ITEM B_MONITOR_ITEM B_WARN_ITEM B_WARN_LEVEL B_TRIGGER_RULE B_WARN_CONFIG
#    3 0x3730FE7713A4FDD9969D8...  16921.3265  1.5%    590  28.6802 94.03 INSERT CPU
#    4 0xEEA71CBEC45A0FC311A27...  16102.5233  1.4%    446  36.1043 83.47 INSERT MONITOR_IO
#    5 0xA179FD9F11A7534079065...  14763.5261  1.3%    315  46.8683 22... SELECT
#    6 0x2E09446E39E26D4228FC5...  14271.2467  1.3%   1049  13.6046 86.55 SHOW GLOBAL STATUS
#    7 0x80AEBDBE9DD8458C3AEAA...  12499.6690  1.1%    490  25.5095 14.47 SET
#    8 0xE354C33516DDE664D4B2C...  11851.6269  1.0%    308  38.4793 80.57 INSERT MONITOR_NET
#    9 0x5783BF90097A2A1A9CF97...   8731.4926  0.8%    469  18.6173 97.85 INSERT MYSQL_MONITOR_SINGLE
#   10 0x7804C4793C7E78E15BD1D...   7645.1394  0.7%   1089   7.0203 88.46 INSERT MONITOR_IO
#   11 0xA2A048A4DDFF20FECBAC4...   6950.2792  0.6%    165  42.1229 10... INSERT WARN_INFO
#   12 0x683364692E9888355E12E...   6757.6127  0.6%     89  75.9282 63.73 INSERT MONITOR_SYSTEM_LOAD
#   13 0x066B074B099ADC1C2C92B...   6529.4115  0.6%    237  27.5503 12... INSERT MONITOR_IOPS
...略
           

具體例子

分析慢查詢日志

pt-query-digest /var/lib/mysql/mysql.slow
           

也可以通過

--filter

指令過濾指定的SQL

pt-query-digest slow.log           \
   --no-report                     \
   --output slowlog                \
   --filter '$event->{fingerprint} \
        && make_checksum($event->{fingerprint}) eq "FDEA8D2993C9CAF3"'
           

FDEA8D2993C9CAF3

是該SQL的checksum,如下:

按照格式化後的SQL分組,按照運作時間排序

pt-query-digest               \
    --group-by fingerprint    \
    --order-by Query_time:sum \
    --limit 10                \
    slow.log
           

格式化後的sql

原SQL:

SELECT name, password FROM user WHERE id='12823';
select name,   password from user
   where id=5;
           

格式化後:

select name, password from user where id=?
           

SHOW PROCESSLIST

中分析查詢

pt-query-digest --processlist h=127.0.0.1,p=123,P=3306,u=root
           

分析

tcpdump

捕獲的MySQL協定資料

tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt

pt-query-digest --type tcpdump mysql.tcp.txt
           

繼續閱讀