当前位置:首页 > Mysql教程 > 列表

MySQL数据库慢日志分析工具mysqlsla使用教程

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-17 16:19:59 浏览: 评论:0 

mysqlsla是一个慢日志分析工具了,我们可以把慢日志对过mysqlsla进行分析从而得出性能最差的sql语句了,下面我们一起来看看吧,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

方法二:

  1. wgethttp://hackmysql.com/scripts/mysqlsla-2.03.tar.gz 
  2. # tar xzvf mysqlsla-2.03.tar.gz 
  3. mysqlsla-2.03/ 
  4. mysqlsla-2.03/Changes 
  5. mysqlsla-2.03/INSTALL 
  6. mysqlsla-2.03/README 
  7. mysqlsla-2.03/Makefile.PL 
  8. mysqlsla-2.03/bin/ 
  9. mysqlsla-2.03/bin/mysqlsla 
  10. mysqlsla-2.03/META.yml 
  11. mysqlsla-2.03/lib/ 
  12. mysqlsla-2.03/lib/mysqlsla.pm 
  13. mysqlsla-2.03/MANIFEST 
  14. # cd mysqlsla-2.03 
  15. # ll 
  16. 总计 68 
  17. drwxr-xr-x 2 1000 1000 4096 2008-11-11 bin 
  18. -rw-r–r– 1 1000 1000 5630 2008-11-11 Changes 
  19. -rw-r–r– 1 1000 1000 394 2008-07-13 INSTALL 
  20. drwxr-xr-x 2 1000 1000 4096 2008-11-11 lib 
  21. -rw-r–r– 1 1000 1000 389 2008-07-13 Makefile.PL 
  22. -rw-r–r– 1 1000 1000 152 2008-07-13 MANIFEST 
  23. -rw-r–r– 1 1000 1000 303 2008-11-11 META.yml 
  24. -rw-r–r– 1 1000 1000 1969 2008-11-11 README 
  25. # less INSTALL 
  26. Installing mysqlsla 
  27. =================== 
  28. perl Makefile.PL 
  29. make 
  30. make install 
  31. Depending on your system, the mysqlsla script will be copied to some common bin 
  32. directory (/usr/local/bin/ for example). Then you should be able to run it from 
  33. the command line like: mysqlsla -lt slow LOG 
  34. For quick help, man mysqlsla 
  35. For all documentation and guides, visit http://hackmysql.com/mysqlsla 
  36. # less Makefile.PL 
  37. use 5.008004; 
  38. use ExtUtils::MakeMaker; 
  39. WriteMakefile( 
  40. NAME => ‘mysqlsla’, 
  41. VERSION_FROM => ‘lib/mysqlsla.pm’, 
  42. PREREQ_PM => {}, 
  43. ($] >= 5.005 ? 
  44. (ABSTRACT_FROM => ‘lib/mysqlsla.pm’, # retrieve abstract from module 
  45. AUTHOR => ‘Daniel Nichter (http://hackmysql.com/contact)’) : ()), 
  46. EXE_FILES => [ 'bin/mysqlsla' ], 
  47. ); 
  48. # perl Makefile.PL 
  49. Checking if your kit is complete… 
  50. Looks good 
  51. Writing Makefile for mysqlsla 
  52. # ll 
  53. 总计 96 
  54. drwxr-xr-x 2 1000 1000 4096 2008-11-11 bin 
  55. -rw-r–r– 1 1000 1000 5630 2008-11-11 Changes 
  56. -rw-r–r– 1 1000 1000 394 2008-07-13 INSTALL 
  57. drwxr-xr-x 2 1000 1000 4096 2008-11-11 lib 
  58. -rw-r–r– 1 root root 22722 09-08 18:52 Makefile 
  59. -rw-r–r– 1 1000 1000 389 2008-07-13 Makefile.PL 
  60. -rw-r–r– 1 1000 1000 152 2008-07-13 MANIFEST 
  61. -rw-r–r– 1 1000 1000 303 2008-11-11 META.yml 
  62. -rw-r–r– 1 1000 1000 1969 2008-11-11 README 
  63. --phpfensi.com 
  64. # make 
  65. cp lib/mysqlsla.pm blib/lib/mysqlsla.pm 
  66. cp bin/mysqlsla blib/script/mysqlsla 
  67. /usr/bin/perl “-MExtUtils::MY” -e “MY->fixin(shift)” blib/script/mysqlsla 
  68. Manifying blib/man3/mysqlsla.3pm 
  69. # make install 
  70. Installing /usr/lib/perl5/site_perl/5.8.8/mysqlsla.pm 
  71. Installing /usr/share/man/man3/mysqlsla.3pm 
  72. Installing /usr/bin/mysqlsla 
  73. Writing /usr/lib/perl5/site_perl/5.8.8/i386-Linux-thread-multi/auto/mysqlsla/.packlist 
  74. Appending installation info to /usr/lib/perl5/5.8.8/i386-linux-thread-multi/perllocal.pod 

默认将命令mysqlsla安装到/usr/bin目录,执行mysqlsla –help时提示没有安装DBI模块,mysqlsla是用perl写的,第一次通过CPAN安装perl模块时,需要进行相关的配置,大部分配置采用默认值,一路回车即可.

#perl -MCPAN -e Shell

然后在下面的各个询问中可以改已经配置好的选项,然后执行下面的命令保存.

CPAN>reload index

CPAN>reload cpan

安装DBI模块:CPAN>install DBI

如果是第一次以后进入CPAN系统,想修改以前的配置,可以在CPAN命令行(即CPAN>)键入以下指令:

CPAN>o conf init

同时要执行下面的命令保存:

CPAN>reload index

CPAN>reload cpan

man mysqlsla可以看到mysqlsla的相关选项:

  1. # man mysqlsla 
  2. XXX 
  3. XXX WARNING: old character encoding and/or character set 
  4. XXX 
  5. mysqlsla(3) User Contributed Perl Documentation mysqlsla(3) 
  6. NAME 
  7. mysqlsla – Parse, filter, analyze and sort MySQL slow, general and binary logs 
  8. SYNOPSIS 
  9. # Basic operation: parse a MySQL slow or general log 
  10. mysqlsla –log-type slow LOG 
  11. mysqlsla –log-type general LOG 
  12. # Parse output from mysqlbinlog 
  13. # mysqlsla cannot directly parse binary logs 
  14. mysqlbinlog LOG │ mysqlsla –log-type binary - 
  15. # Parse a microslow patched slow log 
  16. mysqlsla –log-type msl LOG 
  17. # Replay a replay file 
  18. mysqlsla –replay FILE 
  19. # Parse a user-defined log specify its format 
  20. mysqlsla –log-type udl –udl-format FILE 
  21. # Let mysqlsla automatically determine the log type 
  22. mysqlsla LOG 
  23. DESCRIPTION 
  24. mysqlsla parses, filters, analyzes and sorts MySQL slow, general, binary and microslow patched slow logs. 
  25. It also supports user-defined logs. 
  26. This POD/man page is only a very brief outline of usage and command line options. For the full library of 
  27. mysqlsla documentation visithttp://hackmysql.com/mysqlsla. 
  28. # mysqlsla /tmp/mysqlslow.log | less 
  29. Auto-detected logs as slow logs 
  30. Report for slow logs: /tmp/mysqlslow.log 
  31. 6 queries total, 6 unique 
  32. Sorted by ‘t_sum’ 
  33. Grand Totals: Time 0 s, Lock 0 s, Rows sent 13, Rows Examined 13 
  34. ______________________________________________________________________ 001 ___ 
  35. Count : 1 (16.67%) 
  36. Time : 2.321 ms total, 2.321 ms avg, 2.321 ms to 2.321 ms max (47.20%) 
  37. Lock Time (s) : 629 ?s total, 629 ?s avg, 629 ?s to 629 ?s max (77.75%) 
  38. Rows sent : 8 avg, 8 to 8 max (61.54%) 
  39. Rows examined : 8 avg, 8 to 8 max (61.54%) 
  40. Database : 
  41. Users : 
  42. root@ 192.168.1.100 : 100.00% (1) of query, 100.00% (6) of all users 
  43. Query abstract: 
  44. SET timestamp=N; SHOW variables LIKE ‘S’; 
  45. Query sample: 
  46. SET timestamp=1252395365; 
  47. show variables like ‘%character%’; 
  48. …… 

格式说明如下:

总查询次数(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语句

除了以上的输出,官方还提供了很多定制化参数,是一款不可多得的好工具.

Tags: MySQL日志分析 mysqlsla

分享到: