分析mysql慢查詢日誌的好工具--mysqlsla
mysql資料庫的慢查詢日誌是非常重要的一項調優輔助日誌,但是mysql預設記錄的日誌格式閱讀時不夠友好,這是由mysql日誌記錄規則所決定的,捕獲一條就記錄一條,雖說記錄的資訊足夠詳盡,但如果將瀏覽慢查詢日誌做為一項日常工作,直接閱讀mysql生成的慢查詢日誌就有可能比較低效了。
除了作業系統命令直接檢視slowlog外,mysql自己也提供了一個閱讀slowlog的命令列工具:mysqldumpslow,該命令列提供了一定的分析彙總功能,可以將多個類似的SQL語句抽象顯示成一個,不過功能還是有些簡陋,除此之外,還有不少的第三方工具,可用於分析mysql慢查詢日誌,其中,三思用了一陣子mysqlsla,感覺簡單又易用。
mysqlsla不僅僅可用來處理慢查詢日誌,也可以用來分析其它日誌比如二進位制日誌,普通查詢日誌等等,其對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 install
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在編譯過程中會出現錯誤。
準備工作完全,就可以安裝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]
比如說,原始慢日誌中有一堆的下列語句:
# 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進一步分析了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-692828/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql慢查詢日誌分析工具mysqlslaMySql
- mysqlsla 分析mysql慢查詢日誌MySql
- mysql分析慢查詢日誌工具mysqlsla安裝MySql
- 【MySql】 慢日誌查詢工具之mysqlslaMySql
- mysql慢查詢日誌分析工具使用MySql
- 關於MySQL 通用查詢日誌和慢查詢日誌分析MySql
- MySQL:慢查詢日誌MySql
- mysql慢查詢日誌MySql
- 【MySql】mysql 慢日誌查詢工具之mysqldumpslowMySql
- 對 MySQL 慢查詢日誌的簡單分析MySql
- mysql慢查詢和錯誤日誌分析MySql
- PHP慢指令碼日誌和Mysql的慢查詢日誌PHP指令碼MySql
- MySQL優化 - 開啟MySQL慢查詢日誌及分析工具mysqldumpslowMySql優化
- 【MySQL】慢查詢日誌不列印MySql
- 慢查詢日誌開啟分析
- MySQL 慢查詢日誌——讓“慢”無所遁形MySql
- mysql之 slow log 慢查詢日誌MySql
- MySQL Slow Query log(慢查詢日誌)MySql
- Mysql 慢日誌分析工具MysqldumpslowMySql
- 慢查詢日誌的管理
- 使用慢查詢日誌
- MySQL慢查詢日誌相關設定MySql
- 【轉載】MySQL慢查詢日誌總結MySql
- MYSQL開啟慢查詢日誌實施MySql
- mysql開啟檢視慢查詢日誌MySql
- 用命令過濾MySQL慢查詢日誌MySql
- Mysql慢查詢日誌檔案轉ExcelMySqlExcel
- MySQL資料庫中的日誌檔案---(3)慢查詢日誌MySql資料庫
- MySQL慢查詢分析工具之mysqldumpslowMySql
- 如何在MySQL中開啟慢查詢日誌?MySql
- Mysql 啟動慢查詢日誌 (不用重啟)MySql
- Linux下mysql配置慢日誌查詢,把查詢慢的sql記錄下來LinuxMySql
- 開啟查詢慢查詢日誌引數
- 資料庫MySQL一般查詢日誌或者慢查詢日誌歷史資料的清理資料庫MySql
- mysql 日誌之慢查詢日誌MySql
- mysql 查詢日誌MySql
- mysql查詢日誌MySql
- MySQL 5.1.6以上版本動態開啟慢查詢日誌MySql