啓用 slow log
有兩種啓用方式:
1, 在my.cnf 裏 經過 log-slow-queries[=file_name]
2, 在mysqld進程啓動時,指定--log-slow-queries[=file_name]選項
比較的五款經常使用工具
mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilterphp
mysqldumpslow, mysql官方提供的慢查詢日誌分析工具. 輸出圖表以下
主要功能是, 統計不一樣慢sql的
出現次數(Count),
執行最長時間(Time),
累計總耗費時間(Time),
等待鎖的時間(Lock),
發送給客戶端的行總數(Rows),
掃描的行總數(Rows),
用戶以及sql語句自己(抽象了一下格式, 好比 limit 1, 20 用 limit N,N 表示).
講一下有用的參數:
-s 排序選項:c 查詢次數 r 返回記錄行數 t 查詢時間
-t 只顯示top n條查詢
mysqldumpslow -s r -t 10 slow.log
html
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語句
除了以上的輸出, 官方還提供了不少定製化參數, 是一款不可多得的好工具.
功能上有點瑕疵, 不只把全部的 slow log 打印到屏幕上, 並且統計也只有數量而已. 不推薦使用.
功能上比官方的mysqldumpslow, 多了查詢時間的統計信息(平均,最大, 累計), 其餘功能都與 mysqldumpslow相似.
特點功能除了統計信息外, 還針對輸出內容作了排版和格式化, 保證總體輸出的簡潔. 喜歡簡潔報表的朋友, 推薦使用一下.python
功能上, 列出了總的慢查詢次數和類型, 去重後的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 |
很是精簡 |