工具描述
DMLOG用于对达梦SQL日志进行统计分析,便于SQL优化人员进行查看捕获关键信息,不提供SQL优化建议。DMLOG用java语言编写,不受操作系统平台限制,大小不超过10M,在安装好Java环境后,可在各平台运行。
该工具实现的原理为:读取SQL日志到后台达梦数据库log_commit表中 ,在数据库中进行查询统计后输出excel文件结果。
Log_commit表的表结构定义如下:
CREATE TABLE "SYSDBA"."LOG_COMMIT"
(
"STARTTIME" DATETIME(6),
"SESS" VARCHAR(500),
"SQLSTR" TEXT,
"EXETIME" FLOAT,
"SQLSTR_SUB" VARCHAR(8000),
"EUER" VARCHAR(100),
"OPTYPE" VARCHAR(30)) STORAGE(USING LONG ROW, ON "MAIN", CLUSTERBTR) ;
CREATE INDEX "IDX_EXETIME_RESULT_2021_10_12_11_22_52" ON "SYSDBA"."LOG_COMMIT"("EXETIME" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ;
分别记录了根据日志分析出来的SQL开始时间,会话信息,SQL文本,执行时间,参数替换后的SQL文本,SQL执行用户信息,SQL语句操作类型(新加字段)
开启达梦慢日志
BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000)
BUF_SIZE = 1024 #SQLs Log Buffer Size(K)(50~409600)
BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count(1~100)[SLOG_ALL]FILE_PATH = ../log/slogPART_STOR = 0SWITCH_MODE = 2SWITCH_LIMIT = 128ASYNC_FLUSH = 1FILE_NUM = 5ITEMS = 0 SQL_TRACE_MASK = 1 MIN_EXEC_TIME = 0 USER_MODE = 0 USERS =
注意,1、要到log目录下新建slog文件夹。2、是USER_MODE=0 --为0代表不指定用户,为1时USERS要列出指定用户
测试是否开启
- 登录达梦
- 执行测试语句不需要重启,如下图:
sp_set_para_value(1,'SVR_LOG',1);
- 然后随便执行一条查询语句
- 执行成功后我们进入到slog日志的目录查看
日志分析
-
配置DmLog
-
执行jar包命令
生成的结果目录下有根据配置的执行时间和执行次数上限值命名的excel文件(xls),报错的SQL和长度超过30000的SQL会另外生成txt文件(txt),echart散点图,QPS折线图及90%平均次数和平均耗时的SQL统计图(html): -
分析结果
DmLog使用条件
- 运行环境预先安装Java环境;支持liunx和windows系统运行。
说明:推荐使用java1.8版本,linux最小化安装最少要安装打印服务组件,windows下不支持java1.6版本。 - SQL日志格式要求确保每条语句后紧跟sql语句时间,因此需确认日志生成的数据库的sql trace参数,建议使用默认参数;
- 由于程序运行需要在后台数据库建log_commit表,建表前会删除同名表,因此如果有同名表,请先做好备份;
- 待分析的SQL文件夹中请保证只有SQL日志,无其他文件;
- dmlog.properties配置文件中log路径,注意windows下,使用”\”代替”\”。
注意:请运维人员把sql日志拷贝到测试环境分析,严禁连接生产环境,将生产库作为后台库分析!!!!!!