首页 > 代码库 > mysql慢查询日志分析工具mysqlsla

mysql慢查询日志分析工具mysqlsla

一、介绍   

  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:

分析mysql慢查询日志的好工具--mysqlsla  

MySQL慢日志分析工具mysqlsla

本文出自 “大麦茶” 博客,请务必保留此出处http://damaicha.blog.51cto.com/6046098/1867614

mysql慢查询日志分析工具mysqlsla