前言
一连三问
什么是慢SQL,你知道吗?
慢sql在哪里?
重点来了,慢SQL怎么去分析?
如果不知道,那你接着往下看,助你效率提升N倍!!!
去年写了文章mysql慢查询可视化分析,介绍了pt-query-digest这个工具怎么对mysql的慢查询进行分析。后续基于这个工具进行了二次简单封装开发,生成html报告文件。
持续有小伙伴私信问我能否开源这个工具,是否能看下源码,最近整理了下,上传到了github上,欢迎大家学习交流
ps:界面做的有点丑,大家将就着看(我对前端还是比较欠缺)
先看下效果:
环境安装
安装golang
我使用的开发语言是go,所以第一步,需要安装golang的环境。也可以使用其他语言开发,比如:python、java等
我安装的golang的版本是:1.22.2,安装的版本不能低于这个
安装包地址,选择对应的系统环境下载安装即可。
安装 Percona Toolkit
Percona Toolkit 这个工具的安装,包含了pt-query-digest,建议直接安装,如果单独安装pt-query-digest,需要安装底层的各种依赖包。如果安装Percona Toolkit,需要的依赖一起安装,这样比较省事。
Percona Toolkit,官网地址,按照介绍,直接安装即可
推荐这种安装方式,如果是其它linux的版本,需要安装源,根据报错信息,网上搜下资料安装就好
- For Debian or Ubuntu:
sudo apt-get install percona-toolkit
- For RHEL or CentOS:
sudo yum install percona-toolkit
ps: pt-query-digest只能在linux安装,所以运行的时候请在linux下进行
开发思路
开发流程如下:
步骤:
//命令样例
pt-query-digest /var/log/mysql4306-slow.log --output json --noversion-check --progress time,1 --charset=utf8mb4 --since='2024-04-16 00:00:00' --until='2024-04-16 23:00:00' >mysql_slow.json
如何使用
有的小伙伴,可能对golang不熟悉,没事,你只要安装了pt-query-digest就行,执行的文件,我已经打包好了。下载项目下来,直接运行即可
使用介绍
./slowsql-analysis -h 可以获取帮助信息
Usage of ./slowsql-analysis:
-endTime string
结束时间 格式:yyyy-mm-dd hh:mm:ss
-f string
慢sq日志文件所在的位置 例子:/var/log/mysql4306-slow.log
-startTime string
开始时间 格式:yyyy-mm-dd hh:mm:ss
执行样例:
./slowsql-analysis -f /var/log/mysql4306-slow.log -startTime="2024-04-16 00:00:00" -endTime="2024-04-16 23:00:00"
执行后,就会在当前目录生成一个html文件,直接打开查看即可。
文件解读
文件打开如下;
点击查看执行的sql:
指标
指标 | 描述 |
---|---|
数据库 | 对应的在哪个逻辑库上执行的 |
查询次数 | 在指定的时间内,这个sql总执行的次数 |
单次查询的最大行数 | 执行的sql,扫描的数据库的数据行数 |
单次查询的最大字节数 | 查询的数据的大小 |
单次发送客户端的最大行数 | 查询出来的数据,发给我客户端多少行,比如:数据库扫描的了1w行,但是数据库过来后,只发了客户端100行 |
单次慢查询最长时间 | 在这时间区间,sql执行的最长时间 |
慢查询95时间 | 同样的sql,响应时间,95%都是这个时间 |
慢查询涉及表 | sql查询,关联了哪些表 |
我只要用了这些指标,真正的指标数据还很多,根据需要可以修改源码,提取更多的符合自己的指标数据
源码地址
代码我以前上传到github,需要的自行下载学习,以及二次开发都可以。项目地址:
slowsql-analysis
最后,如果这个工具对你有帮助,请动动小手,一键三连,点赞、收藏、关注,让更多人看到。