点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!实例级 SQL 日志分析工具,DMLOG 工具是一款简单易用的达梦数据库 SQL 日志分析工具,通过分析数据库的 SQL 日志文件(达梦数据库可通过开启 SVR_LOG 捕捉数据库中运行的所有 SQL,并生成 SQL 日志文件),来统计日志中最长执行时间和执行最高频次的 SQL 语句,直观地反映 SQL 执行情况,对于 SQL 的优化工作提供了极大的便利。- 达梦数据库 SQL 日志分析功能,统计分析日志并根据执行时间和执行频次进行排序,生成 excel 文档。
- 支持生成 echart 散点图,每个点上的 sql 可以显示和拷贝。
- 支持生成 sql 统计图,根据执行次数和执行时间统计。
- DMLOG 工具不受操作系统平台限制,大小不超过 10M,在安装好 Java 环境后,可在各平台运行。
- DMLOG 工具适用于各种版本的 DM7 数据库和 DM8 数据库。
DMLOG 工具可自行在 在线服务平台 VIP 专区 下载或联系达梦技术服务人员获取。运行环境需预先安装 Java 环境,DMLOG 支持在 Liunx 和 Windows 系统运行。推荐使用 java1.8 版本,linux 最小化安装最少要安装打印服务组件,windows 下不支持 java1.6 版本。SQL 日志格式要求确保每条语句后紧跟 sql 语句时间,因此需确认日志生成的数据库的 sql trace 参数,建议使用默认参数。由于程序运行需要在后台数据库建 log_commit 表,建表前会删除同名表,因此如果有同名表,请先做好备份。待分析的 SQL 文件夹中请保证只有 SQL 日志,无其他文件。dmlog.properties 配置文件中 log 路径,注意 windows 下,使用”\\”代替”\”。由于一页 excel 最大行数为 65536,因此当待分析的日志量较大时,会提示超过限值警告,只取前 65535 记录。此时可以将日志切割或分批进行分析,或者分析执行时间比较长和执行时间比较高的 SQL,也可以不使用替换参数功能,减少输出结果。警告:本工具只能在测试环境进行分析,切忌连接生产环境!!!Copy[root@localhost DMLOG8.3]# su - dmdba
Last login: Tue Oct 12 11:20:08 CST 2021 on pts/1
[dmdba@localhost ~]$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
Copy[root@localhost ]# unzip DMLOG8.*.zip
[root@localhost /]# cd DMLOG8.*/
[root@localhost DMLOG8.10]# vi dmlog.properties
注意:Windows 环境下,dmlog.properties 配置文件中 log 路径 sqlpath 参数,需使用”\\”代替”\”,liunx 下填写正常路径即可。Copy[root@localhost DMLOG8.**]# java -jar Dmlog_DM_8.**.jar
运行过程如下图所示,执行完成后会按当前时间生成对应 RESULT_$DATE 文件夹,并将所有统计信息都存放该目录中。生成的 RESULT_$DATE 结果文件夹下有根据配置的执行时间和执行次数上限值命名的 excel 文件(xls)、报错的 SQL 文件(txt)、长度超过 30000 的 SQL 文件 (txt),echart 散点图及 90% 平均次数和平均耗时的 SQL 统计图 (html)。3.1 more_than_0_ms_log_result.xls 工作表3.2 more_than_0_times_log_result.xls 工作表3.3 echarts_scatter_loading10.html 为 echart 散点图每个点的 SQL 信息可以显示和拷贝,如下图:- 1)筛选 SEL/DDL/INS/CAL 等分类,只用点击去除或者选择对应类别,即可显示对应 sql 在图形上分布点。
- 2)支持散点图区域放大功能,鼠标指定位置,进行滚轮缩放,可放大语句。
- 3)点击每个点,可获得每个点的 SQL 详细信息。
3.4 echarts_scatter_Statistics.html 为散点图基础上生成的按照执行 90% 平均次数和平均耗时的 SQL 统计图:为 QPS(Queries-per-second,即每秒查询率,在数据库中指每秒执行查询 sql 的次数)折线图: