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: