一、介绍
mysqlsla是一个分析mysql慢日志的工具,可以分析出慢查询的原因,包括执行某条sql出现的次数及在slow log数据的百分比、执行时间、等待销的时间等。
公司的数据库有很多慢查询日志,导致的系统的负载很高,而mysql慢查询日志文件内容格式不太好看,经推荐使用mysqlsla;使用方便,操作简单。
二、安装mysqlsla
系统环境
CentOS release 6.6 (Final) 2.6.32-504.el6.x86_64
官网已经不能下载,所需要的文件已在百度云盘共享。
百度云盘文件下载地址:http://pan.baidu.com/s/1kVvyUYN
1、下载安装mysqlsla
mkdir -p /server/tools
从百度云盘下载mysqlsla-2.03.tar.gz到/server/tools目录下
cd /server/tools tar xf mysqlsla-2.03.tar.gz cp mysqlsla-2.03/bin/mysqlsla /usr/local/bin
注意:
注:若在执行的过程中出现以下错误,需要安装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-DBI perl-DBD-MySQL -y
三、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:
本文出自 “大麦茶” 博客,请务必保留此出处http://damaicha.blog.51cto.com/6046098/1867614
原文:http://damaicha.blog.51cto.com/6046098/1867614