• 达梦日志分析工具DMLOG使用


    1.使用工具的目的

    分析SQL是DBA或者数据库服务人员很重要的工作。达梦数据库通过开启SVR_LOG捕捉数据库中运行的所有SQL,并生成SQL日志文件。DMLOG工具是一款简单易用的达梦数据库SQL日志分析工具,旨在帮助运维人员统计日志中最长执行时间和执行最高频次的SQL语句,直观的反应SQL执行情况,对于SQL的优化工作提供了极大的便利。

    2.适用范围

    本工具适用于各种版本的DM7数据库和DM8数据库。

    3.工具描述

    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) ;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    分别记录了根据日志分析出来的SQL开始时间,会话信息,SQL文本,执行时间,参数替换后的SQL文本,SQL执行用户信息,SQL语句操作类型(新加字段)
    注:下文以新版本使用为例

    新版本DMLOG 工具可自行在 在线服务平台 VIP 专区 下载或联系达梦技术服务人员获取。

    老版本:
    Dmlog 工具下载:Dmlog_DM7_v5.1.jar
    使用说明介绍:Dmlog 小工具使用简要.pdf

    4.开启跟踪日志记录执行SQL

    跟踪日志文件是一个纯文本文件,以 dmsql_实例名_日期_时间命名, 默认生成在 DM 安装目录的 log 子目录下。

    跟踪日志内容包含系统各会话执行的 SQL 语句、参数信息、错误信息、执行时间等。跟踪日志主要用于分析错误和分析性能问题,基于跟踪日志可以对系统运行状态进行分析。

    跟踪日志配置方式
    根据需要配置数据文件目录下的 sqllog.ini,如下所示:

    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       = /home/dmdbms/sqllog
        PART_STOR       = 0
        SWITCH_MODE     = 1
        SWITCH_LIMIT    = 100000
        ASYNC_FLUSH     = 0
        FILE_NUM        = 200
        ITEMS           = 0
        SQL_TRACE_MASK  = 2:3:23:24:25
        MIN_EXEC_TIME   = 0
        USER_MODE       = 0
        USERS           =
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    配置 dm.ini 中 SVR_LOG = 1 启用 sqllog.ini 配置,该参数为动态参数,可通过调用数据库函数直接修改,如下所示:

    SP_SET_PARA_VALUE(1,'SVR_LOG',1);
    
    • 1

    如果对 sqllog.ini 进行了修改,可通过调用以下函数即时生效,无需重启数据库,如下所示:

    SP_REFRESH_SVR_LOG_CONFIG();
    
    • 1

    5.使用条件及限制

    使用条件
    1) 运行环境预先安装Java环境;支持liunx和windows系统运行。
    说明:推荐使用java1.8版本,linux最小化安装最少要安装打印服务组件,windows下不支持java1.6版本。
    2) SQL日志格式要求确保每条语句后紧跟sql语句时间,因此需确认日志生成的数据库的sql trace参数,建议使用默认参数;
    3) 由于程序运行需要在后台数据库建log_commit表,建表前会删除同名表,因此如果有同名表,请先做好备份;
    4) 待分析的SQL文件夹中请保证只有SQL日志,无其他文件;
    5) dmlog.properties配置文件中log路径,注意windows下,使用”\”代替”\”。
    6) 注:只能使用page_size为32K的库用来分析

    注意:本程序只能连测试环境进行分析,切忌连生产环境!!!
    使用限制
    由于一页excel最大行数为65536,因此当待分析的日志量较大时,会提示超过限值警告,然后取前65535记录。
    此时可以将日志切割或分批进行分析,或者分析执行时间比较长和执行时间比较高的SQL,也可以不使用替换参数功能,减少输出结果。

    6.使用说明

    6.1使用前准备

    查看Java安装情况:

    [root@dmmpp01 ~]# su - dmdba
    上一次登录: 日 1120 15:02:27 CST 2022 pts/0 上
    [dmdba@dmmpp01 ~]$ java -version
    openjdk version "1.8.0_272"
    OpenJDK Runtime Environment Bisheng (build 1.8.0_272-b10)
    OpenJDK 64-Bit Server VM Bisheng (build 25.272-b10, mixed mode)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    6.2使用方法和步骤

    解压工具包并配置工具参数:

    [root@localhost /]# unzip DMLOG8.*.zip
    [root@localhost /]# cd DMLOG8.*/
    [root@localhost DMLOG8.10]# vi dmlog.properties
    
    • 1
    • 2
    • 3

    新版分析工具取消了交互式配置界面直接配置dmlog.properties文件如下:
    注意:dmlog.properties配置文件中log路径sqlpath参数,注意windows下,使用”\”代替”\”,liunx下填写正常路径即可。
    在这里插入图片描述
    执行jar包命令

    [root@dmmpp01 DMLOG8.11]# java -jar Dmlog_DM_8.11.jar 
    Linux
    创建分析结果目录RESULT_2022_11_21_2_57_39成功!
    ----------------分析文件:dmsql_DMSERVER_20221121_025159.log----------------
    /home/dmdbms/sqllog/dmsql_DMSERVER_20221121_025159.log文件已处理:5000行
    /home/dmdbms/sqllog/dmsql_DMSERVER_20221121_025159.log文件已处理:20000行
    /home/dmdbms/sqllog/dmsql_DMSERVER_20221121_025159.log文件已处理:25000行
    /home/dmdbms/sqllog/dmsql_DMSERVER_20221121_025159.log文件已处理:30000行
    /home/dmdbms/sqllog/dmsql_DMSERVER_20221121_025159.log文件已处理:35000行
    /home/dmdbms/sqllog/dmsql_DMSERVER_20221121_025159.log文件已处理:40000行
    ----------------创建索引-------------------------
    ----------------创建索引成功---------------------
    ----------------开始分析-------------------------
    ----------------生成时间维度统计结果-------------
    ----------------生成次数维度统计结果-------------
    ----------------生成jfree散点图------------------
    ----------------生成echart统计图-----------------
    ----------------生成QPS统计图--------------------
    ----------------生成echart负载图-----------------
    ----------------TABLENAME:LOG_COMMIT-------------
    ----------------分析完毕,请查看结果-------------
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    运行过程如下图所示,执行完成后会按当前时间生成对应 RESULT_$DATE 文件夹,并将所有统计信息都存放该目录中。
    在这里插入图片描述
    在这里插入图片描述

    7.结果解读

    生成的 RESULT_$DATE 结果文件夹下有根据配置的执行时间和执行次数上限值命名的 excel 文件(xls)、报错的 SQL 文件(txt)、长度超过 30000 的 SQL 文件 (txt),echart 散点图及 90% 平均次数和平均耗时的 SQL 统计图 (html)。
    在这里插入图片描述

    1.more_than_0_ms_log_result.xls 工作表按照最大执行时间降序排序,如下图。
    在这里插入图片描述
    2.more_than_0_times_log_result.xls 工作表按照执行次数降序排序,如下图。
    在这里插入图片描述
    3.echarts_scatter_loading10.html 为 echart 散点图每个点的 SQL 信息可以显示和拷贝,如下图
    在这里插入图片描述

    散点图支持以下功能:
    (1)筛选 SEL/DDL/INS/CAL 等分类,只用点击去除或者选择对应类别,即可显示对应 sql 在图形上分布点;
    (2)支持散点图区域放大功能,鼠标指定位置,进行滚轮缩放,可放大语句。
    (3)点击每个点,可获得每个点的 SQL 详细信息。
    (4)点击散点图右上角可以保存图片。

    4. echarts_scatter_Statistics.html 为散点图基础上生成的按照执行 90% 平均次数和平均耗时的 SQL 统计图。
    在这里插入图片描述
    5. echarts_qps.html 为 QPS(Queries-per-second,即每秒查询率,在数据库中指每秒执行查询 sql 的次数)折线图。
    在这里插入图片描述
    如果你还有其他问题,欢迎到达梦社区来提问~
    社区地址:https://eco.dameng.com

  • 相关阅读:
    配置全面升级!NANK南卡骨传导运动耳机Runner CC 3新品首发
    k8s集群新增计算节点使用华为iscsi存储创建的pvc存储挂载报错:FailedMount
    Python合并拼接图片
    GEO数据库中搜索数据
    重塑DeFi:深入了解Solaris Network
    k8s-master 高可用
    ROS2学习(一):Ubuntu 22.04 安装 ROS2(Iron Irwini)
    java数组算法进阶
    gitlab和jenkins做持续集成构建教程
    MySQL - 主键索引和非主键索引
  • 原文地址:https://blog.csdn.net/qq_38114620/article/details/128022223