mysql數據庫的慢查詢日誌是很是重要的一項調優輔助日誌,可是mysql默認記錄的日誌格式閱讀時不夠友好,這是由mysql日誌記錄規則所決定的,捕獲一條就記錄一條,雖然說記錄的信息足夠詳盡,但若是將瀏覽慢查詢日誌作爲一項平常工做,直接閱讀mysql生成的慢查詢日誌就有可能比較低效了。mysql
除了操做系統命令直接查看slowlog外,mysql本身也提供了一個閱讀slowlog的命令行工具:mysqldumpslow,該命令行提供了必定的分析彙總功能,能夠將多個相似的SQL語句抽象顯示成一個,不過功能仍是有些簡陋,除此以外,還有很多的第三方工具,可用於分析mysql慢查詢日誌,其中,三思用了一陣子mysqlsla,感受簡單又易用。linux
mysqlsla不單單可用來處理慢查詢日誌,也能夠用來分析其它日誌好比二進制日誌,普通查詢日誌等等,其對sql語句的抽象功能很是實用,參數設定簡練易用,很好上手。sql
當前mysqlsla的最新版本爲2.03,能夠下拉到官網下載,地址以下:
http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz數據庫
mysqlsla是perl編寫的腳本,運行mysqlsla須要perl-DBI和per-DBD-Mysql兩模塊的支持,所以在運行mysqlsla前須要首先安裝DBI模塊和相應的數據庫DBD驅動,而默認狀況下linux不安裝這兩個模塊,須要自行下載安裝,下載地址以下:
http://www.cpan.org/modules/by-module/DBI/DBI-1.608.tar.gz
http://www.cpan.org/modules/by-module/DBD/DBD-mysql-4.011.tar.gz工具
DBI的編譯安裝步驟以下:
# tar xvfz DBI-1.608.tar.gz
# cd DBI-1.608
# perl Makefile.PL
# make
# make test
# make installspa
DBD-mysql驅動模塊的編譯安裝步驟以下:
# tar xvfz DBD-mysql-4.011.tar.gz
# cd DBD-mysql-4.011
# perl Makefile.PL
# make
# make install操作系統
須要注意,在安裝DBD-mysql時須要用到mysql_config,該命令包含在MySQL-devel安裝包中,若是當前系統中沒有安裝該軟件,須要首先安裝MySQL-devel,不然DBD-mysql在編譯過程當中會出現錯誤。.net
準備工做徹底,就能夠安裝mysqlsla了,編譯安裝步驟以下:
# tar xvfz mysqlsla-2.03.tar.gz
# cd mysqlsla-2.03
# perl Makefile.PL
# make
# make install命令行
mysqlsla命令默認會保存在/usr/bin路徑下,一般可在任意路徑下直接執行。對慢查詢日誌文件的分析,最簡化的調用方式以下:
# mysqlsla -lt slow [SlowLogFilePath] > [ResultFilePath]日誌
使用方法:
使用mysqlsla分析MySQL慢查詢日誌
#查詢記錄最多的20個sql語句,並寫到select.log中去 mysqlsla -lt slow --sort t_sum --top 20 /data/mysql/127-slow.log >/tmp/select.log #統計慢查詢文件爲/data/mysql/127-slow.log的全部select的慢查詢sql,並顯示執行時間最長的100條sql,並寫到sql_select.log中去 mysqlsla -lt slow -sf "+select" -top 100 /data/mysql/127-slow.log >/tmp/sql_select.log #統計慢查詢文件爲/data/mysql/127-slow.log的數據庫爲mydata的全部select和update的慢查詢sql,並查詢次數最多的100條sql,並寫到sql_num.sql中去 mysqlsla -lt slow -sf "+select,update" -top 100 -sort c_sum -db mydata /data/mysql/127-slow.log >/tmp/sql_num.log
好比說,原始慢日誌中有一堆的下列語句:
# Time: 110417 0:00:09
# User@Host: junsansi[junsansi] @ [192.168.1.27]
# Query_time: 3 Lock_time: 0 Rows_sent: 1 Rows_examined: 17600
select min(DOC_HIS_ID) AS DOC_HIS_ID from t_******** where DOC_HIS_ISTEAMMATE=1 and DOC_HIS_EDITOR_USER_ID_ENCRYPT='nfEACAwQEW1MICAN2';
# User@Host: junsansi[junsansi] @ [192.168.1.27]
# Query_time: 4 Lock_time: 0 Rows_sent: 1 Rows_examined: 17600
select min(DOC_HIS_ID) AS DOC_HIS_ID from t_******** where DOC_HIS_ISTEAMMATE=1 and DOC_HIS_EDITOR_USER_ID_ENCRYPT='nfEACAwQEW2MICAN2';
# User@Host: jss[junsansi] @ [192.168.1.26]
# Query_time: 4 Lock_time: 0 Rows_sent: 1 Rows_examined: 17600
select min(DOC_HIS_ID) AS DOC_HIS_ID from t_******** where DOC_HIS_ISTEAMMATE=1 and DOC_HIS_EDITOR_USER_ID_ENCRYPT='nfEACAwQEW3MICAN2';
# User@Host: junsansi[junsansi] @ [192.168.1.27]
# Query_time: 3 Lock_time: 0 Rows_sent: 1 Rows_examined: 17600
select min(DOC_HIS_ID) AS DOC_HIS_ID from t_******** where DOC_HIS_ISTEAMMATE=1 and DOC_HIS_EDITOR_USER_ID_ENCRYPT='nfEACAwQEW4MICAN2';
# User@Host: jss[junsansi] @ [192.168.1.26]
# Query_time: 5 Lock_time: 0 Rows_sent: 1 Rows_examined: 17600
select min(DOC_HIS_ID) AS DOC_HIS_ID from t_******** where DOC_HIS_ISTEAMMATE=1 and DOC_HIS_EDITOR_USER_ID_ENCRYPT='nfEACAwQEW5MICAN2';
....................
....................
直接閱讀的操做體驗很很差,使用mysqlsla處理後,結果呈現以下:
Count : 23 (8.52%)
Time : 102 s total, 4.434783 s avg, 3 s to 7 s max (6.79%)
95% of Time : 88 s total, 4.190476 s avg, 3 s to 6 s max
Lock Time (s) : 0 total, 0 avg, 0 to 0 max (0.00%)
95% of Lock : 0 total, 0 avg, 0 to 0 max
Rows sent : 1 avg, 1 to 1 max (0.02%)
Rows examined : 11.53k avg, 5.70k to 17.60k max (1.07%)
Database : jssdb
Users :
junsansi@ 192.168.1.27 : 86.96% (20) of query, 11.11% (30) of all users
jss@ 192.168.1.26 : 13.04% (3) of query, 2.96% (8) of all users
Query abstract:
SELECT MIN(doc_his_id) AS doc_his_id FROM t_******** WHERE doc_his_isteammate=N AND doc_his_editor_user_id_encrypt='S';
Query sample:
select min(DOC_HIS_ID) AS DOC_HIS_ID from t_******** where DOC_HIS_ISTEAMMATE=1 and DOC_HIS_EDITOR_USER_ID_ENCRYPT='nfEACAwQEW2MICAN2';
在上述結果中,語句的執行狀況(執行次數,對象信息,查詢記錄量,時間開銷,來源統計)等信息一目瞭然,比較便於DBA進一步分析了。
原文:http://blog.itpub.net/7607759/viewspace-692828/