您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關mysql中的pt-query-digest命令有什么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
pt-query-digest是用于分析mysql慢查詢的一個工具,它可以分析binlog、General log、slowlog,也可以通過show processlist命令或者通過tcpdump
抓取的MySQL協議數據來進行分析。可以把分析結果輸出到文件中,分析過程是先對查詢語句的條件進行參數化,然后對參數化以后的查詢進行分組
統計,統計出各查詢的執行時間、次數、占比等,可以借助分析結果找出問題進行優化。默認情況下,該工具分析slow log并會報告哪個查詢最慢。
查看幫助:
$ pt-query-digest --help
Usage: pt-query-digest [OPTIONS] [FILES] [DSN]
--host #指定MySQL地址;
--port #指定MySQL端口;
--socket #指定MySQL SOCK文件;
--user #指定MySQL用戶;
--password #指定MySQL密碼;
--type #指定將要分析的類型,默認是slowlog,還有如binlog,general log等;
--charset #指定字符集;
--filter #對輸入的慢查詢按指定的字符串進行匹配過濾后再進行分析;
--limit #限制輸出結果百分比或數量,默認值是20,即將最慢的20條語句輸出,如果是50%則按總響應時間占比從大到小排序,輸出到總和達到50%位置截止;
--review #將分析結果保存到表中,這個分析只是對查詢條件進行參數化,一個類型的查詢一條記錄,比較簡單;當下次使用--review時,如果存在相同的語句分析,就不會記錄到數據表中;
--history #將分析結果保存到表中,分析結果比較詳細,下次再使用--history時,如果存在相同的語句,且查詢所在的時間區間和歷史表中的不同,則會記錄到數據表中,可以通過查詢同--CHECKSUM來比較某類型查詢的歷史變化;
--since #從什么時間開始分析,值為字符串,可以是指定的某個"yyyy-mm-dd [hh:mm:ss]"格式的時間點,也可以是簡單的一個時間值:s(秒)、h(小時)、m(分鐘)、d(天),如12h就表示從12小時前開始統計;
--until #截止時間,配合--since可以分析一段時間內的慢查詢;
--log #指定輸出的日志文件;
--output #分析結果輸出類型,值可以是report(標準分析報告)、slowlog(Mysql slow log)、json、json-anon;一般使用report,以便于閱讀;
--create-review-table #當使用--review參數把分析結果輸出到表中時,如果沒有表就自動創建;
--create-history-table #當使用--history參數把分析結果輸出到表中時,如果沒有表就自動創建;
使用舉例:
1) pt-query-digest分析慢查詢日志;
$ pt-query-digest --report slow.log
2) 報告最近半個小時的慢查詢;
$ pt-query-digest --report --since 1800s slow.log
3) 報告一個時間段的慢查詢;
$ pt-query-digest --report --since '2019-02-10 21:48:59' --until '2019-02-16 02:33:50' slow.log
4) 報告只含select語句的慢查詢;
$ pt-query-digest --filter '$event->{fingerprint} =~ m/^select/i' slow.log
5) 報告針對某個用戶的慢查詢;
$ pt-query-digest --filter '($event->{user} || "") =~ m/^root/i' slow.log
6) 報告所有的全表掃描或full join的慢查詢;
$ pt-query-digest --filter '(($event->{Full_scan} || "") eq "yes") || (($event->{Full_join} || "") eq "yes")' slow.log
7) 把查詢保存到query_review表;
$ pt-query-digest --user=root –password=123456 --review h=localhost,D=test,t=query_review --create-review-table slow.log
8) 把查詢保存到query_history表;
$ pt-query-digest --user=root –password=123456 --history h=localhost,D=test,t=query_history --create-history-table slow.log
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_report.log
10) 分析binlog;
$ mysqlbinlog mysql-bin.000001 > mysql-bin000001.sql
$ pt-query-digest --type=binlog mysql-bin000001.sql > slow_report.log
11) 分析general log;
$ pt-query-digest --type=genlog general.log > slow_report.log
關于“mysql中的pt-query-digest命令有什么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。