這篇文章將為大家詳細(xì)講解有關(guān)MySQL中的pt-query-digest命令有什么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)由有經(jīng)驗(yàn)的網(wǎng)站設(shè)計(jì)師、開發(fā)人員和項(xiàng)目經(jīng)理組成的專業(yè)建站團(tuán)隊(duì),負(fù)責(zé)網(wǎng)站視覺設(shè)計(jì)、用戶體驗(yàn)優(yōu)化、交互設(shè)計(jì)和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站易于使用并且具有良好的響應(yīng)性。
pt-query-digest是用于分析mysql慢查詢的一個(gè)工具,它可以分析binlog、General log、slowlog,也可以通過show processlist命令或者通過tcpdump
抓取的MySQL協(xié)議數(shù)據(jù)來進(jìn)行分析??梢园逊治鼋Y(jié)果輸出到文件中,分析過程是先對查詢語句的條件進(jìn)行參數(shù)化,然后對參數(shù)化以后的查詢進(jìn)行分組
統(tǒng)計(jì),統(tǒng)計(jì)出各查詢的執(zhí)行時(shí)間、次數(shù)、占比等,可以借助分析結(jié)果找出問題進(jìn)行優(yōu)化。默認(rèn)情況下,該工具分析slow log并會(huì)報(bào)告哪個(gè)查詢最慢。
查看幫助:
$ pt-query-digest --help
Usage: pt-query-digest [OPTIONS] [FILES] [DSN]
--host #指定MySQL地址;
--port #指定MySQL端口;
--socket #指定MySQL SOCK文件;
--user #指定MySQL用戶;
--password #指定MySQL密碼;
--type #指定將要分析的類型,默認(rèn)是slowlog,還有如binlog,general log等;
--charset #指定字符集;
--filter #對輸入的慢查詢按指定的字符串進(jìn)行匹配過濾后再進(jìn)行分析;
--limit #限制輸出結(jié)果百分比或數(shù)量,默認(rèn)值是20,即將最慢的20條語句輸出,如果是50%則按總響應(yīng)時(shí)間占比從大到小排序,輸出到總和達(dá)到50%位置截止;
--review #將分析結(jié)果保存到表中,這個(gè)分析只是對查詢條件進(jìn)行參數(shù)化,一個(gè)類型的查詢一條記錄,比較簡單;當(dāng)下次使用--review時(shí),如果存在相同的語句分析,就不會(huì)記錄到數(shù)據(jù)表中;
--history #將分析結(jié)果保存到表中,分析結(jié)果比較詳細(xì),下次再使用--history時(shí),如果存在相同的語句,且查詢所在的時(shí)間區(qū)間和歷史表中的不同,則會(huì)記錄到數(shù)據(jù)表中,可以通過查詢同--CHECKSUM來比較某類型查詢的歷史變化;
--since #從什么時(shí)間開始分析,值為字符串,可以是指定的某個(gè)"yyyy-mm-dd [hh:mm:ss]"格式的時(shí)間點(diǎn),也可以是簡單的一個(gè)時(shí)間值:s(秒)、h(小時(shí))、m(分鐘)、d(天),如12h就表示從12小時(shí)前開始統(tǒng)計(jì);
--until #截止時(shí)間,配合--since可以分析一段時(shí)間內(nèi)的慢查詢;
--log #指定輸出的日志文件;
--output #分析結(jié)果輸出類型,值可以是report(標(biāo)準(zhǔn)分析報(bào)告)、slowlog(Mysql slow log)、json、json-anon;一般使用report,以便于閱讀;
--create-review-table #當(dāng)使用--review參數(shù)把分析結(jié)果輸出到表中時(shí),如果沒有表就自動(dòng)創(chuàng)建;
--create-history-table #當(dāng)使用--history參數(shù)把分析結(jié)果輸出到表中時(shí),如果沒有表就自動(dòng)創(chuàng)建;
使用舉例:
1) pt-query-digest分析慢查詢?nèi)罩?
$ pt-query-digest --report slow.log
2) 報(bào)告最近半個(gè)小時(shí)的慢查詢;
$ pt-query-digest --report --since 1800s slow.log
3) 報(bào)告一個(gè)時(shí)間段的慢查詢;
$ pt-query-digest --report --since '2019-02-10 21:48:59' --until '2019-02-16 02:33:50' slow.log
4) 報(bào)告只含select語句的慢查詢;
$ pt-query-digest --filter '$event->{fingerprint} =~ m/^select/i' slow.log
5) 報(bào)告針對某個(gè)用戶的慢查詢;
$ pt-query-digest --filter '($event->{user} || "") =~ m/^root/i' slow.log
6) 報(bào)告所有的全表掃描或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協(xié)議數(shù)據(jù),然后再分析;
$ 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
關(guān)于“mysql中的pt-query-digest命令有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。
網(wǎng)站題目:mysql中的pt-query-digest命令有什么用
當(dāng)前網(wǎng)址:http://chinadenli.net/article14/jgjege.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、建站公司、App開發(fā)、網(wǎng)站設(shè)計(jì)、云服務(wù)器、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)