mysqldumpslow – 读懂MySQL慢查询日志

一、慢查询日志介绍

MySQL中,SQL的执行效率直接影响了MySQL的性能。为了便于DBA及时发现并处理有性能异常的SQL,MySQL专门设立了慢查询日志(slow query log)。SQL执行时间大于long_query_time设定的时候,MySQL就会将这条SQL记录到慢查询日志中。

MySQL慢查询日志既可以保存成文件,又可以保存在MySQL的表中。由于保存在表中,会给数据库带来额外的压力,所以一般都保存在文件中,其保存路径由slow_query_log_file变量决定。

慢查询日志记录了SQL的执行日期时间、SQL查询消耗时间、锁定时间、以及SQL语句。慢查询日志是一个流水账,并不能很好的用于统计分析。

 

二、mysqldumpslow的用法

所以,为了便于阅读MySQL慢查询日志,MySQL引入了 mysqldumpslow。mysqldumpslow能将相同的慢SQL归类,并统计出相同的SQL执行的次数,每次执行耗时多久、总耗时,每次返回的行数、总行数,以及客户端连接信息等。

mysqldumpslow的用法:

下面是mysqldumpslow格式化过后的慢查询日志。
其含义是 “SELECT * FROM sdb_site_widgets_instance LIMIT N, N”这条SQL,一共执行了2次;每次执行耗时68.85秒,总耗时137秒;锁定时间0秒;每次返回49.5行,总返回99行;客户端为hccdb[hccdb]@[10.10.6.155] 。

要注意上面SQL语句中的N,下面会提到。

mysqldumpslow的参数说明:

 

三、例子

平均执行时间最长的前10条SQL

平均锁定时间最长的前10条SQL

执行次数最多的前10条SQL(2017-2-13增加)

所有和“sdb_image_image”表相关的慢查询SQL

显示SQL的具体值,而不是由N代替。便于查看执行计划并优化

显示所有sdb_image_image表相关的慢SQL的具体值

 

发表评论

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