使用mysqldumpslow和mysqlsla分析mysql慢查询日志

作者: 老王 原文: http://hi.baidu.com/thinkinginlamp/blog/item/97acfc0319372e81d43f7ca9.html

MySQL优化不是一劳永逸的工作,而是一个持久战。其中慢查询日志的分析是一个重要手段,以前我总是手动大概看看,不过这实在不是长久之计,今天试用了一下mysqldumpslow和mysqlsla,感觉效率高多了。

mysqldumpslow

mysqldumpslow是官方提供的perl脚本,所以你也不用费劲巴拉的安装了,只要有mysql的环境基本就能用:

/path/to/mysqldumpslow -s c

其中参数(-s c)的意思就是按照各种慢查询条数排序。不过mysqldumpslow有一个挺不爽的缺点,就是查询的结果只有一些抽象的SQL,没有可供实际运行的SQL例子。

mysqlsla

mysqlsla是第三方提供的perl脚本,不过它功能更强悍,可以分析包括慢查询在内的多种格式的日志,同时没有上面所说的mysqldumpslow的缺点。

tar zxf http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz
cd mysqlsla-2.03
perl Makefile.PL
make
make install

使用起来很简单:

/path/to/mysqlsla slow.log

mysqlsla会自动判断日志类型,缺省会打印出前十条结果,可以通过类似“–top 100”的参数来修改,如果觉得每次输入麻烦,还可以建立一个配置文件“~/.mysqlsla”,在文件里写上:top=100,这样就不用每次都手动输入参数了。

还有很多其他的工具,不过我感觉只要会用这两个就足够了,mysqldumpslow相对通用,mysqlsla相对强大,剩下其他的杂七杂八的工具不看也罢。

慢查询分析是个长期工作,即便系统长时间没有引入新的SQL查询,也可能由于不断更新数据使得数据分布特征发生变化,从而导致索引失效,进而产生慢查询。所以说平时要多留神,有了上面介绍的利器,工作会清闲很多。

补充:试了一下mk-query-digest,比mysqlsla更强,推荐使用。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注