分析慢查询日志是性能调优中获取信息的主要方式之一。
如果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的使用方法如下:
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 |
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.其他常用参数
4.示例:
# mysqldumpslow mysql-slow.log -a -g consumeitem -s t > slow.log
这条语句将删选出含有“consumeitem”的SQL语句,禁用数字和字符串的抽象,并按照查询总时间排序。
结果如下所示:
(责任编辑:IT) |