> 数据库 > MySQL >

MYSQL性能调优:官方mysqldumpslow分析Mysql slow log

分析慢查询日志是性能调优中获取信息的主要方式之一。

如果slow log比较小,那么可以直接使用vi等文本编辑器或less、more命令打开。但如果slow log过大,载入慢查询日志将耗费大量时间,这个时候就要考虑使用其他工具来对慢查询进行分析了。

mysql的自带工具mysqldumpslow,可以有效的帮助我们对slow log进行筛选和分析。

官方文档5.7版本地址:https://dev.mysql.com/doc/refman/5.7/en/mysqldumpslow.html
参看官方文档可以略去本文。

mysqldumpslow的使用方法如下:

MYSQL性能调优:官方mysqldumpslow分析Mysql slow log

mysqldumpslow使用

1.基本用法:
执行命令:
mysqldumpslow mysqlslow.log

结果如下:

1 Count: 1 Time=176.25s (176s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
2 delete FROM `info5_tuijian` where id<N ORDER BY `id` DESC
3  
4 Count: 1 Time=41.52s (41s) Lock=0.00s (0s) Rows=1.0 (1), root[root]@localhost
5 select SQL_CALC_FOUND_ROWS * FROM `info5_tuijian` where id <N LIMIT N

可以看到,使用mysqldumpslow工具导出的慢查询日志,比原生日志要简洁很多。结果中展示的项目有:这条语句在整个slow log中执行的次数(COUNT项),平均执行时间(TIME项),总执行时间(平均执行时间后括号中的值),平均锁定时间(LOCK项,括号中为总锁定时间),平均返回行数(括号中为总返回行数),执行语句的用户和主机名,慢查询语句。

mysqldumpslow工具导出的日志,会将数字和字符串抽象为N和S。因此如果你想看到完整的SQL语句信息,可以使用-a参数来禁用抽象值。

2.结果排序:
默认情况下,mysqldumpslow的结果是按照COUNT数倒序排列。如果你想使用其他的排序方式那么可以采用下面的参数:

  • -s t、 at: 按总查询时间 或 平均查询时间
  • -s l、 al: 按总锁定时间 或 平均锁定时间
  • -s r、 ar: 按总返回行数 或 平均返回行数
  • -s c: 按执行次数
  • -r : 倒序

3.其他常用参数

  • -g patten: 只输出匹配的语句

4.示例:
# mysqldumpslow mysql-slow.log -a -g consumeitem -s t > slow.log
这条语句将删选出含有“consumeitem”的SQL语句,禁用数字和字符串的抽象,并按照查询总时间排序。
结果如下所示:

(责任编辑:IT)