日期:2014-05-16  浏览次数:20717 次

[转载]mysqlsla日志分析工具
mysqlsla日志分析工具

mysqlsla是hackmysql.com推出的一款MySQL的日志分析工具,功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等。
一、使用
mysqlsla -lt slow mysql-slow.log
或者
mysqlsla -lt slow mysql-slow.log -sf "+SELECT" -db dbName -top 10 -sort t_sum

参数意义
lt:表示日志类型,有slow, general, binary, msl, udl。
sf:[+-][TYPE],[TYPE]有SELECT, CREATE, DROP, UPDATE, INSERT,例如”+SELECT,INSERT”,不出现的默认是-,即不包括。
db:要处理哪个库的日志。
top:表示取按规则排序的前多少条。
sort:按某种规则排序,t_sum按总时间排序, c_sum按总次数排序。

二、分析结果   
    总查询次数 (queries total), 去重后的sql数量 (unique)

    输出报表的内容排序(sorted by)

    最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数.

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


三、安装

方法一  
    从http://hackmysql.com/mysqlsla下载mysqlsla,当前最新版为:2.03
    tar zxvf mysqlsla-2.03.tar.gz
    cp mysqlsla-2.03/bin/mysqlsla /usr/local/bin

   如果提示“Can’t locate DBI.pm”,执行以下命令

    yum install perl-DBI perl-DBD-MySQL -y

   这时就可以使用mysqlsla了,用法如下

    mysqlsla -lt slow slow.log

方法二#
wgethttp://hackmysql.com/scripts/mysqlsla-2.03.tar.gz
–18:44:18– http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz
正在解析主机 hackmysql.com… 64.13.232.157
Connecting to hackmysql.com|64.13.232.157|:80… 已连接。
已发出 HTTP 请求,正在等待回应… 200 OK
长度:33674 (33K) [application/x-tar]
Saving to: `mysqlsla-2.03.tar.gz’

100%[=====================================================================================>] 33,674 45.9K/s in 0.7s

18:44:20 (45.9 KB/s) – `mysqlsla-2.03.tar.gz’ saved [33674/33674]

# tar xzvf mysqlsla-2.03.tar.gz
mysqlsla-2.03/
mysqlsla-2.03/Changes
mysqlsla-2.03/INSTALL
mysqlsla-2.03/README
mysqlsla-2.03/Makefile.PL
mysqlsla-2.03/bin/
mysqlsla-2.03/bin/mysqlsla
mysqlsla-2.03/META.yml
mysqlsla-2.03/lib/
mysqlsla-2.03/lib/mysqlsla.pm
mysqlsla-2.03/MANIFEST
# cd mysqlsla-2.03
# ll
总计 68
drwxr-xr-x 2 1000 1000 4096 2008-11-11 bin
-rw-r–r– 1 1000 1000 5630 2008-11-11 Changes
-rw-r–r– 1 1000 1000 394 2008-07-13 INSTALL
drwxr-xr-x 2 1000 1000 4096 2008-11-11 lib
-rw-r–r– 1 1000 1000 389 2008-07-13 Makefile.PL
-rw-r–r– 1 1000 1000 152 2008-07-13 MANIFEST
-rw-r–r– 1 1000 1000 303 2008-11-11 META.yml
-rw-r–r– 1 1000 1000 1969 2008-11-11 README

# less INSTALL

Installing mysqlsla
===================

perl Makefile.PL
make
make install

Depending on your system, the mysqlsla script will be copied to some common bin
directory (/usr/local/bin/ for example). Then you should be able to run it from
the command line like: mysqlsla -lt slow LOG

For quick help, man mysqlsla

For all documentation and guides, visit http://hackmysql.com/mysqlsla

# less Makefile.PL
use 5.008004;
use ExtUtils::MakeMaker;