MySQL慢日志分析工具 mysqldumpslow

2023年 12月 24日 56.2k 0

MySQL慢日志分析工具 mysqldumpslow

 

mysqldumpslow工具可以用来分析mysql的slowlog日志文件,常用几个参数:

-a

不要显示的抽象出来SQL指纹,这里解释下SQL指纹的概念。

例如,对于下面2个SQL语句:

select * from table where id=1;

select * from table where id=2;

这2个SQL的SQL指纹都是一样的,它们都可以抽象出来下面的查询模型:

select * from table where id=xxx ;

如果使用了-a,就不会抽象出来SQL指纹,会直接显示SQL;相反,不使用-a,则会抽象出来SQL指纹。

-n

抽象出来的数字至少包含多少位(这个选项一般很少用)

-g

结果中使用grep过滤(其实这个功能没什么必要,我们可以执行完成之后直接用grep命令过滤,更加灵活。)

-l

不要从总时间中减去锁的时间

-s

排序方法,可选的值有:

t,at :按照慢SQL查询时间或者平均时间排序

l,al:按照慢SQL加锁时间或者平均加锁时间

r,ar:按照慢SQL返回行数或者平均返回行数

c:按照慢SQL的出现次数

-t

代表选择输出结果中的top N

02

具体案例分析

常见的一种使用方法如下:

mysqldumpslow -a -s t -t 4 -v slow.log

代表按照SQL执行时间,返回slowlog中前4条慢SQL,并且不返回SQL指纹,返回SQL的真实文本。

[root@ ]# /usr/local/mysql-8.0.19/bin/mysqldumpslow -a -s t -t 4 -v slow.log

Reading mysql slow query log from slow.log

Count: 2 Time=54.47s (108s) Lock=0.00s (s) Rows=424.0 (), superdba[superdba]@[10.xx.3.129]
select distinct port,ip,sname ,hit_size from collect.mysql_hit where create_time > DATE_SUB((select max(create_time) from collect.mysql_hit where port = ),INTERVAL MINUTE) and hit_size DATE_SUB(SYSDATE(),INTERVAL MINUTE) and hit_size DATE_SUB(SYSDATE(),INTERVAL MINUTE) and hit_size DATE_SUB(SYSDATE(),INTERVAL MINUTE) and hit_size < and sname='mdb'

我们按照SQL执行时间(也就是括号内的时间来进行排序),

并显示出top 4 的慢日志分析结果。

03

总结

mysqldumpslow工具的分析结果比较简单,但是分析慢日志的速度整体还是比较快的。可以用作快速分析慢日志的一个参考工具。

在percona-toolkit工具包中,还有一个类似的工具,叫pt-query-digest工具,它的分析报告会更加详细。但是分析的耗时也会相应增加。这个工具使用也比较简单,之前的文章中也有介绍过。

使用pt-query-digest分析mysql慢日志

    大家可以根据自己的实际情况选择使用哪一个。如果只想快速简单分析,mysqldumpslow是一个好的选择,如果要更加详细的分析报告,则可以考虑pt-query-digest工具。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论