新功能上线的坑 一次达梦数据库故障的排查过程(DB应答码7075、DB应答码524)

新功能上线的坑

一次达梦数据库故障的排查过程

一、事件回顾:

       我单位办公系统使用达梦V8数据库主从集群。今年7月某个星期一的早上,办公系统大范围出现各种页面报错,表单打开失败,有些查询模块提示失败。办公系统部分页面可以正常打开,初步判断数据库层面出现异常。

     排查办公系统使用的云平台、虚拟机负载正常,无相关报错信息。数据库主库服务器CPU略高于常态,约18core,数据库服务器内存稳定在32.9%。

    评估数据库从库服务器的资源及运行状态正常。为了尽快回复业务,进行了数据库主备切换操作,切库后系统运行正常。为了排除上个周五新功能造成的异常,中午闲时进行了业务回退。

二、排查过程:

       排查sqllog日志,在sql_err_log里出现大量的错误SQL信息,“DB应答码7075,应答错误信息:数据变化量巨大,并且内存不足,导致结果不正确,请重新执行语句”。共计5298条记录。

     “DB应答码524,应答错误信息:超出全局hash join空间,适当增加HJ_BUF_GLOBAL_SIZE”。共计4510条记录;但该应答码首次出现是在上一个周五晚,新功能上线的时候,因此初步判断因为业务变更导致。

        新功能的SQL,涉及两个100W行数据表和视图关联,SQL在管理工具的执行时间为1.5秒左右,此SQL涉及到一个视图APPROVAL_VIEW和OA_APPROVAL_EXTEND做HASH连接,导致占用HJ_BUF_GLOBAL_SIZE空间较大,再加上其它SQL的运行也需要占用HJ_BUF_GLOBAL_SIZE空间,导致HJ_BUF_GLOBAL_SIZE空间被占满,报524错误代码;因为HJ_BUF_GLOBAL_SIZE空间被占满,此时当有新的SQL也需要从HJ_BUF_GLOBAL_SIZE中申请空间时,则会有7075报错,里面提及的数据量大和内存不足是针对申请的空间和获取到的内存空间而言;

三、后期建议:

       1)新功能上线前,在与生产配置相同的测试环境下进行全面压力测试,尽量提前发现可能出现的问题;

      2)根据现有数据库服务器的配置和使用需求将数据库参数进行调整;出现这个报错的时候,有两个解决办法,治标就是调大参数得值,由于是动态参数,可以再运行过程中调整。治本就是找到报错的SQL语句进行优化,将hash join优化为nest loop。HJ_BUF_GLOBAL_SIZE 是一个动态参数,默认是500M ,前期经厂商调整为了3000M。64G内存以上的服务器,可以将HJ_BUF_GLOBAL_SIZE配置成15000M。但是这个百万表的加入,需要调整的参数不止HJ_BUF_GLOBAL_SIZE这一个。

     3)新功能上线前,对一些复杂的SQL语句,请专业的达梦DBA协助进行SQL的优化;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值