Percona-Toolkit系列(20) --- pt-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,如下:

# Query 10: 4.50 QPS, 0.00x concurrency, ID 0xFDEA8D2993C9CAF3 at byte 355662

按照格式化後的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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章