mysql日誌是很重要的,主要在本文介紹mysql日誌分析的5種工具,並對它們進行比較。
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
mysqldumpslow, mysql官方提供的慢查詢日誌分析工具. 輸出圖表如下:
主要功能是, 統計不同慢sql的
出現次數(count),
執行最長時間(time),
累計總耗費時間(time),
等待鎖的時間(lock),
傳送給客戶端的行總數(rows),
掃瞄的行總數(rows),
使用者以及sql語句本身(抽象了一下格式, 比如 limit 1, 20 用 limit n,n 表示).
mysqlsla, hackmysql.com推出的一款日誌分析工具(該**還維護了 mysqlreport, mysqlidxchk 等比較實用的mysql工具)
整體來說, 功能非常強大. 資料包表,非常有利於分析慢查詢的原因, 包括執行頻率, 資料量, 查詢消耗等.
格式說明如下:
總查詢次數 (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語句
除了以上的輸出, 官方還提供了很多定製化引數, 是一款不可多得的好工具.
mysql-explain-slow-log, 德國人寫的乙個perl指令碼.
功能上有點瑕疵, 不僅把所有的 slow log 列印到螢幕上, 而且統計也只有數量而已. 不推薦使用.
mysql-log-filter, google code上找到的乙個分析工具.提供了 python 和 php 兩種可執行的指令碼.
功能上比官方的mysqldumpslow, 多了查詢時間的統計資訊(平均,最大, 累計), 其他功能都與 mysqldumpslow類似.
特色功能除了統計資訊外, 還針對輸出內容做了排版和格式化, 保證整體輸出的簡潔. 喜歡簡潔報表的朋友, 推薦使用一下.
myprofi, 純php寫的乙個開源分析工具.專案在 sourceforge 上.
功能上, 列出了總的慢查詢次數和型別, 去重後的sql語句, 執行次數及其佔總的slow log數量的百分比.
從整體輸出樣式來看, 比mysql-log-filter還要簡潔. 省去了很多不必要的內容. 對於只想看sql語句及執行次數的使用者來說, 比較推薦.
總結工具/功能
一般統計資訊
高階統計資訊
指令碼優勢
mysqldumpslow
支援不支援
perl
mysql官方自帶
mysqlsla
支援支援
perl
功能強大,資料包表齊全,定製化能力強.
mysql-explain-slow-log
支援不支援
perl
無mysql-log-filter
支援部分支援
python or php
不失功能的前提下,保持輸出簡潔
myprofi
支援不支援
php非常精簡
MySQL優化 慢查詢日誌
mysql的慢查詢日誌是mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句,具體指執行時間超過long query time值的sql,則會被記錄到慢查詢日誌中。當然,如果不是調優需要的話,一般不建議啟動該引數,因為開啟慢查詢日誌會或多或少帶來一定的效能影響。開啟了慢查詢日...
mysql優化之慢查詢日誌開啟
博文位址 mysql資料庫的優化 1 檢視mysql是否開啟慢查詢日誌 show variables like slow query log 檢視手否開啟沒有索引的記錄到慢查詢日誌 show variables like log queries not using indexes 查詢到都是off,...
MySQL優化篇 慢查詢日誌
mysql的慢查詢日誌是mysql提供的一種日誌記錄,他用來記錄在mysql中響應時間超過閾值的語句,具體指執行時間超過long query time值的sql,則會被記錄到慢查詢日誌中。具體指執行時間超過long query time值的sql,則會被記錄到慢查詢日誌中。long query ti...