五款常用mysql slow log分析工具的比較分析
更新時間:2011年05月22日 12:17:41 作者:
mysql slow log 是用來記錄執(zhí)行時間較長(超過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
mysqldumpslow, mysql官方提供的慢查詢?nèi)罩痉治龉ぞ? 輸出圖表如下:

主要功能是, 統(tǒng)計不同慢sql的
出現(xiàn)次數(shù)(Count),
執(zhí)行最長時間(Time),
累計總耗費時間(Time),
等待鎖的時間(Lock),
發(fā)送給客戶端的行總數(shù)(Rows),
掃描的行總數(shù)(Rows),
用戶以及sql語句本身(抽象了一下格式, 比如 limit 1, 20 用 limit N,N 表示).
mysqlsla, hackmysql.com推出的一款日志分析工具(該網(wǎng)站還維護了 mysqlreport, mysqlidxchk 等比較實用的mysql工具)

整體來說, 功能非常強大. 數(shù)據(jù)報表,非常有利于分析慢查詢的原因, 包括執(zhí)行頻率, 數(shù)據(jù)量, 查詢消耗等.
格式說明如下:
總查詢次數(shù) (queries total), 去重后的sql數(shù)量 (unique)
輸出報表的內(nèi)容排序(sorted by)
最重大的慢sql統(tǒng)計信息, 包括 平均執(zhí)行時間, 等待鎖時間, 結(jié)果行的總數(shù), 掃描的行總數(shù).
Count, sql的執(zhí)行次數(shù)及占總的slow log數(shù)量的百分比.
Time, 執(zhí)行時間, 包括總時間, 平均時間, 最小, 最大時間, 時間占到總慢sql時間的百分比.
95% of Time, 去除最快和最慢的sql, 覆蓋率占95%的sql的執(zhí)行時間.
Lock Time, 等待鎖的時間.
95% of Lock , 95%的慢sql等待鎖時間.
Rows sent, 結(jié)果行統(tǒng)計數(shù)量, 包括平均, 最小, 最大數(shù)量.
Rows examined, 掃描的行數(shù)量.
Rows examined, 掃描的行數(shù)量.
Database, 屬于哪個數(shù)據(jù)庫
Users, 哪個用戶,IP, 占到所有用戶執(zhí)行的sql百分比
Query abstract, 抽象后的sql語句
Query sample, sql語句
除了以上的輸出, 官方還提供了很多定制化參數(shù), 是一款不可多得的好工具.


功能上有點瑕疵, 不僅把所有的 slow log 打印到屏幕上, 而且統(tǒng)計也只有數(shù)量而已. 不推薦使用.
mysql-log-filter, google code上找到的一個分析工具.提供了 python 和 php 兩種可執(zhí)行的腳本.
http://code.google.com/p/mysql-log-filter/
http://code.google.com/p/mysql-log-filter/

功能上比官方的mysqldumpslow, 多了查詢時間的統(tǒng)計信息(平均,最大, 累計), 其他功能都與 mysqldumpslow類似.
特色功能除了統(tǒng)計信息外, 還針對輸出內(nèi)容做了排版和格式化, 保證整體輸出的簡潔. 喜歡簡潔報表的朋友, 推薦使用一下.
特色功能除了統(tǒng)計信息外, 還針對輸出內(nèi)容做了排版和格式化, 保證整體輸出的簡潔. 喜歡簡潔報表的朋友, 推薦使用一下.
功能上, 列出了總的慢查詢次數(shù)和類型, 去重后的sql語句, 執(zhí)行次數(shù)及其占總的slow log數(shù)量的百分比.
從整體輸出樣式來看, 比mysql-log-filter還要簡潔. 省去了很多不必要的內(nèi)容. 對于只想看sql語句及執(zhí)行次數(shù)的用戶來說, 比較推薦.
從整體輸出樣式來看, 比mysql-log-filter還要簡潔. 省去了很多不必要的內(nèi)容. 對于只想看sql語句及執(zhí)行次數(shù)的用戶來說, 比較推薦.
總結(jié)
工具/功能 | 一般統(tǒng)計信息 | 高級統(tǒng)計信息 | 腳本 | 優(yōu)勢 |
mysqldumpslow | 支持 | 不支持 | perl | mysql官方自帶 |
mysqlsla | 支持 | 支持 | perl | 功能強大,數(shù)據(jù)報表齊全,定制化能力強. |
mysql-explain-slow-log | 支持 | 不支持 | perl | 無 |
mysql-log-filter | 支持 | 部分支持 | python or php | 不失功能的前提下,保持輸出簡潔 |
myprofi | 支持 | 不支持 | php | 非常精簡 |
相關(guān)文章
PHP連接MSSQL2008/2005數(shù)據(jù)庫(SQLSRV)配置實例
這篇文章主要介紹了PHP連接MSSQL2008/2005數(shù)據(jù)庫(SQLSRV)配置方法,實例講述了完整的連接與配置過程,并提供了具體的擴展文件下載與測試代碼,需要的朋友可以參考下2014-10-10php數(shù)組函數(shù)序列之a(chǎn)rray_values() 獲取數(shù)組元素值的函數(shù)與方法
array_keys() 函數(shù)返回包含數(shù)組中所有鍵名的一個新數(shù)組。如果提供了第二個參數(shù),則只返回鍵值為該值的鍵名2011-10-10php去除換行符的方法小結(jié)(PHP_EOL變量的使用)
本來在unix世界換行就用/n來代替,但是windows為了體現(xiàn)他的不同,就用/r/n,更有意思的是在mac中用/r。因此unix系列用 /n,windows系列用 /r/n,mac用 /r,這樣就用你寫的程序在不同的平臺上運行有著不少的麻煩2013-02-02php daddslashes()和 saddslashes()有哪些區(qū)別分析
在Discuze 開源項目中會經(jīng)常用到 saddslashes 函數(shù),這里簡單介紹下,方便需要的朋友2012-10-10