天天看點

5款常用mysql slow log分析工具的比較

mysql slow log 是用來記錄執行時間較長(超過long_query_time秒)的sql的一種日志工具.

啟用 slow log

有兩種啟用方式:

1, 在my.cnf 裡 通過 log-slow-queries[=file_name]2, 在mysqld程序啟動時,指定--log-slow-queries[=file_name]選項

比較的五款常用工具

mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter

<b>mysqldumpslow</b>, mysql官方提供的慢查詢日志分析工具. 輸出圖表如下:

<a href="http://www.kuqin.com/upimg/allimg/081011/2027560.jpg"></a>

主要功能是, 統計不同慢sql的

出現次數(Count),

執行最長時間(Time),

累計總耗費時間(Time),

等待鎖的時間(Lock),

發送給用戶端的行總數(Rows),

掃描的行總數(Rows),

使用者以及sql語句本身(抽象了一下格式, 比如 limit 1, 20 用 limit N,N 表示).

<b>mysqlsla, hackmysql.com推出的一款日志分析工具(該網站還維護了 mysqlreport, mysqlidxchk 等比較實用的mysql工具)</b>

<a href="http://www.kuqin.com/upimg/allimg/081011/2027561.jpg"></a>

整體來說, 功能非常強大. 資料報表,非常有利于分析慢查詢的原因, 包括執行頻率, 資料量, 查詢消耗等.

格式說明如下:

總查詢次數 (queries total), 去重後的sql數量 (unique)

輸出報表的内容排序(sorted by)

最重大的慢sql統計資訊, 包括 平均執行時間, 等待鎖時間, 結果行的總數, 掃描的行總數.

Count, sql的執行次數及占總的slow log數量的百分比.

Time, 執行時間, 包括總時間, 平均時間, 最小, 最大時間, 時間占到總慢sql時間的百分比.

95% of Time, 去除最快和最慢的sql, 覆寫率占95%的sql的執行時間.

Lock Time, 等待鎖的時間.

95% of Lock , 95%的慢sql等待鎖時間.

Rows sent, 結果行統計數量, 包括平均, 最小, 最大數量.

Rows examined, 掃描的行數量.

Database, 屬于哪個資料庫

Users, 哪個使用者,IP, 占到所有使用者執行的sql百分比

Query abstract, 抽象後的sql語句

Query sample, sql語句

除了以上的輸出, 官方還提供了很多定制化參數, 是一款不可多得的好工具.

<b>mysql-explain-slow-log</b>, 德國人寫的一個perl腳本.

<a href="http://www.willamowius.de/mysql-tools.html">http://www.willamowius.de/mysql-tools.html</a>

<a href="http://www.bt285.cn/content.php?id=1196863">http://www.bt285.cn/content.php?id=1196863</a>

<a href="http://www.kuqin.com/upimg/allimg/081011/2027562.jpg"></a>

<a href="http://www.kuqin.com/upimg/allimg/081011/2027563.jpg"></a>

功能上有點瑕疵, 不僅把所有的 slow log 列印到螢幕上, 而且統計也隻有數量而已. 不推薦使用.

<b>mysql-log-filter</b>, google code上找到的一個分析工具.提供了 python 和 php 兩種可執行的腳本.

<a href="http://code.google.com/p/mysql-log-filter/">http://code.google.com/p/mysql-log-filter/</a>

<a href="http://www.kuqin.com/upimg/allimg/081011/2027564.jpg"></a>

功能上比官方的mysqldumpslow, 多了查詢時間的統計資訊(平均,最大, 累計), 其他功能都與 mysqldumpslow類似.

特色功能除了統計資訊外, 還針對輸出内容做了排版和格式化, 保證整體輸出的簡潔. 喜歡簡潔報表的朋友, 推薦使用一下.

<b>myprofi</b>, 純php寫的一個開源分析工具.項目在 sourceforge 上.

<a href="http://myprofi.sourceforge.net/">http://myprofi.sourceforge.net/</a>

<a href="http://www.kuqin.com/upimg/allimg/081011/2027565.jpg"></a>

功能上, 列出了總的慢查詢次數和類型, 去重後的sql語句, 執行次數及其占總的slow log數量的百分比.

從整體輸出樣式來看, 比mysql-log-filter還要簡潔. 省去了很多不必要的内容. 對于隻想看sql語句及執行次數的使用者來說, 比較推薦.

總結

工具/功能

一般統計資訊

進階統計資訊

腳本

優勢

mysqldumpslow

支援

不支援

perl

mysql官方自帶

mysqlsla

功能強大,資料報表齊全,定制化能力強.

mysql-explain-slow-log

mysql-log-filter

部分支援

python or php

不失功能的前提下,保持輸出簡潔

myprofi

php

非常精簡