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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2637770/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Hadoop幫助命令一Hadoop
- PostgreSQL訪問許可權查詢函式彙總和使用舉例SQL訪問許可權函式
- C#XmlHelper幫助類操作Xml文件的通用方法彙總C#XML
- docker常用命令之幫助啟動類命令和映象命令Docker
- Vagrant box 命令彙總彙總
- Linux設定中文幫助文件、常見目錄、幫助命令Linux
- CRM系統如何幫助客戶彙總並解決痛點
- 重新點亮linux 命令樹————幫助命令[一]Linux
- Git命令彙總Git
- artisan命令彙總
- vagrant命令彙總
- go 命令彙總Go
- gstreamer命令彙總
- git 命令彙總Git
- ClickHouse 命令彙總
- man 命令顯示簡體中文幫助
- api和api幫助文件API
- Redis 命令練習彙總Redis
- 常用壓縮命令彙總
- mvn 相關命令彙總
- dble運維命令彙總運維
- docker筆記7-docker的幫助命令Docker筆記
- postgresql 11版本psql命令幫助大全SQL
- Linux檢視內建命令和非內建命令幫助的幾種方法(man、help、info)Linux
- Mac/Linux 安裝中文版 man 幫助命令MacLinux
- npm常用命令彙總NPM
- linux 常用命令彙總Linux
- ffmpeg常用命令彙總
- Mysql常用命令彙總MySql
- Linux彙總基本命令【1】Linux
- k8s命令彙總K8S
- MySQL 常用命令彙總MySql
- Linux檢視網路卡流量方法的工具和命令彙總Linux
- 獲取有關 Linux shell 內建命令的幫助Linux
- MongoDB常用命令彙總(一)MongoDB
- 面試常用的shell命令彙總面試
- 解壓命令unzip常用方法彙總
- 【Git】git常用命令彙總Git