簡介
pt-query-digest 是用於分析mysql慢查詢的一個工具,與mysqldumpshow工具相比,py-query_digest 工具的分析結果更具體,更完善。
有時因為某些原因如權限不足等,無法在服務器上記錄查詢。這樣的限制我們也常常碰到,所以開發了兩種替代的技術,都集成到了Percona Toolkit 中的 pt-query-digest 中。
第一種是通過 --processlist 選項不斷查看 SHOW FULL PROCESSLISTR 的輸出,記錄查詢第一次出現的時間和消失的時間。某些情況下這樣的精度也足夠發現問題,但卻無法捕獲所有查詢。一些執行較快的查詢可能在兩次執行的間隙就執行完成了,從而無法捕獲到。
第二種是通過抓取TCP網絡包,然后根據MYSQL的客戶端/服務端通信協議進行解析。可以先通過 tcpdump 將網絡包數據保存到磁盤,然后使用 pt-query-digest 的 --type=tcpdump 選項來解析並分析查詢。此方法的精度比較高,並且可以捕獲所有的查詢。還可以解析更高級的協議特性,比如可以解析二進制協議,從而創建並執行服務器端預解析的語句(prepared statement)及壓縮協議。另外還有一種方法,就是通過MYSQL Proxy 代理層的腳本來記錄所有查詢,但在實踐中我們很少這樣做。
在windows中安裝
在我的 mysql/bin 文件夾里並沒有 pt-query-digest.pl 文件,並且要想在windows中支持perl文件,得先安裝 perl 支持,安裝方法可查看 慢查詢日志分析工具之mysqldumpslow。接下來在 mysql/bin 文件夾下打開 git bash窗口,輸入命令:
curl -o pt-query-digest.pl https://www.percona.com/get/pt-query-digest
進度為100%表示下載完成,可以使用命令驗證: perl pt-query-digest.pl --help
使用方法
具體使用方法請查看 http://www.php.cn/mysql-tutorials-357655.html