Mysql的慢查询分析
最基本的是mysql自带的mysqlslowdump
用起来很简单:
mysqldumpslow -s c -t 20 host-slow.log
参数:
- -s,排序,c,t,l,r以及ac,at,al,ar分别是按照query次数,时间,lock时间,返回记录排序。加a就是倒序。
- -t,top n,跟上数字就是算出top多少条
- -g,跟正则表达式。
先进一点的是mysqlsla,也是一个perl脚本,
网址:http://hackmysql.com/mysqlsla
同时这个网站也有其他一些工具,看起来都不错。
这个需要小安装一下:
tar xvfz mysqlsla-2.03.tar.gz cd mysqlsla-2.03 perl Makefile.PL make make install
注意需要perl的支持!
#yum install perl #yum install perl-Time-HiRes
后者是因为第一次运行的时候说2095行报错,于是看了一下,2095行是
use Time::HiRes qw(gettimeofday tv_interval);
安装下就好了。不复杂。
运行也比较简单:
— Slow log: mysqlsla -lt slow slow.log
— General log: mysqlsla -lt general general.log— Binary log: mysqlbinlog bin.log | mysqlsla -lt binary
mysqlsla -lt slow /data/database/slog.log
注意lt=log type,他其实也可以分析mysql的其他日志类型的。
看看他的日志,还是很清晰的:
参考: