天天看點

MySQL日志分析工具

MySQL的性能從檢視日志開始。硬體配置低常常導緻這樣的問題,但事實上大多數情況并不在這裡。某些“慢"SQL阻塞了其他語句的執行,優化查詢是第一步需要做的。

    “工欲善其事必先利其器”,MySQL自身的一款mysqldumpslow 查詢日志分析器,該工具不但陳舊,驗證規範不準确。今天要說的是Percona 的工具pt-query-digest,它能夠分析慢查詢日志内容,生成查詢報告,過濾,重放或傳送一些查詢語句至MySQL,PostgreSQL,memcached或者其他。

     基本文法:pt-query-digest [OPTION...] [FILE]

     pt-query-digest [OPTION...] [FILE]

     缺點: 對系統資源開銷較大(可以将慢查詢日志拷貝至其他地方分析)

     舉例1(在測試庫中進行)、

部分解釋如下:

第一行表示分析該日志所使用的時間。該檔案中一共擁有515.52k慢查詢(測試的情況稍稍多了點。。),其中有240個完全不同類型的查詢,在該時間段内每秒處理的查詢數量:0.12(關于差別完全不同的查詢稍後讨論)

接下來是:

比較嚴重SQL的分析部分:

其中挑出最為嚴重的 4個SQL語句,(可以通過參數 --limit 進行設定)它所有語句響應時間總和,調用比例,查詢類型等

接下來是單個語句的分析:

可以看到在 在資料庫YYY中使用者XX 利用該語句查詢的響應時間分布圖,10S+ 還是很多的。

最後是分析情況:

  # 号部分是分析步驟,最後語句可以再前面 加上 explain 進行複制,進一步分析。

舉例二:

    --review 參數

    該參數可以講分析結果儲存在某個資料表中,這樣我們可以為查詢做出标記,并且當第二次加上 --review 時,如果存在相同的語句分析,就不會記錄到資料表中,

表結構如下:

    CREATE TABLE query_review (

   checksum 一個64位校驗碼對應于finigerprint

   舉例:

舉例三:

  隻收集:select 語句,并将其應用于其他的MySQLserver,并分析出耗時最長的SQL:

(這個可以講線上的 日志分析出來,并應用于測試的伺服器上,模仿線上的真是環境)

舉例四:

   将processlist 收集出來 并輸出到其他檔案:

(這個預設是每秒進行一次連接配接并記錄,可設定,如果連接配接失敗會等待1秒在繼續連接配接)

所有參數 可以通過--help看到。

本文轉自 位鵬飛 51CTO部落格,原文連結http://blog.51cto.com/weipengfei/953075,如需轉載請自行聯系原作者