mysql慢查詢日誌分析工具mysqlsla

1、介紹   mysql

  mysqlsla是一個分析mysql慢日誌的工具,能夠分析出慢查詢的緣由,包括執行某條sql出現的次數及在slow log數據的百分比、執行時間、等待銷的時間等。sql


  公司的數據庫有不少慢查詢日誌,致使的系統的負載很高,而mysql慢查詢日誌文件內容格式不太好看,經推薦使用mysqlsla;使用方便,操做簡單。數據庫


2、安裝mysqlslabash

系統環境app

CentOS release 6.6 (Final)
2.6.32-504.el6.x86_64


官網已經不能下載,所須要的文件已在百度雲盤共享。ide

百度雲盤文件下載地址:http://pan.baidu.com/s/1kVvyUYN 工具


一、下載安裝mysqlslaui

mkdir -p /server/tools

從百度雲盤下載mysqlsla-2.03.tar.gz到/server/tools目錄下spa

cd /server/tools
tar xf mysqlsla-2.03.tar.gz
perl Makefile.PL 
make 
make install
cp mysqlsla-2.03/bin/mysqlsla /usr/local/bin


注意:.net

注:若在執行的過程當中出現如下錯誤,須要安裝perl-DBI perl-DBD-MySQL。

Can't locate Time/HiRes.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ./Run line 6.
BEGIN failed--compilation aborted at ./Run line 6.


解決方法:

yum install perl-Time-HiRes perl-DBI perl-DBD-MySQL perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker -y


3、mysqlsla使用

使用示列:

mysqlsla -lt slow mysql-slow.log -sf 「+SELECT」 -db dbName -top 10 -sort t_sum

顯示的結果
....
______________________________________________________________________ 001 ___
Count         : 1.30k  (83.88%)
Time          : 3924.256013 s total, 3.016338 s avg, 2.00058 s to 7.387539 s max  (80.80%)
  95% of Time : 3518.198185 s total, 2.848743 s avg, 2.00058 s to 5.495059 s max
Lock Time (s) : 233.705 ms total, 180 μs avg, 63 μs to 26.485 ms max  (26.48%)
  95% of Lock : 168.319 ms total, 136 μs avg, 63 μs to 210 μs max
Rows sent     : 67 avg, 0 to 323 max  (3.60%)
Rows examined : 853.77k avg, 852.04k to 855.00k max  (89.56%)
Database      :
Users         :
        root@iZ2345263kiZ 10.160.51.219 : 100.00% (1301) of query, 99.81% (1548) of all users

Query abstract:
SELECT a.*,b.real_name AS user_name,b.order_operator_id,b.back_status FROM approval_record a LEFT JOIN loan_order b ON a.order_no=b.order_no WHERE N=N AND a.is_del = N AND ifnull(a.message_cont
ent,'S') <>'S' AND a.approval_user = N ORDER BY approval_record_id DESC;

Query sample:
select a.*,b.REAL_NAME as USER_NAME,b.ORDER_OPERATOR_ID,b.BACK_STATUS from APPROVAL_RECORD a            left join loan_order b on a.ORDER_NO=b.ORDER_NO                 where 1=1               a
nd a.IS_DEL = 0 and  IFNULL(a.MESSAGE_CONTENT,'') <>''                                                 and                     a.APPROVAL_USER = 9184
  
....

命令參數解釋:

lt:表示日誌類型,有slow, general, binary, msl, udl。
sf:[+-][TYPE],[TYPE]有SELECT, CREATE, DROP, UPDATE, INSERT,例如」+SELECT,INSERT」,不出現的默認是-,即不包括。
db:要處理哪一個庫的日誌。
top:表示取按規則排序的前多少條。
sort:按某種規則排序,t_sum按總時間排序, c_sum按總次數排序。

結果參數解釋:

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語句


參考blog:

分析mysql慢查詢日誌的好工具--mysqlsla  

MySQL慢日誌分析工具mysqlsla

相關文章
相關標籤/搜索