关于达梦DMHS实时同步工具开启预提交参数后导致同步日志报错问题的分析

【问题现象】

DMHS日志报错,影响行数与期望行数不同

【报错原因】
        数据库提交操作比较耗时,为加快同步速度,当两个事务操作的数据没有交集(事务之间没有关联的表)时,两个事务可以并行执行,并行执行的事务提交时,并不受事务提交先后顺序的限制,有可能后提交的事务先提交。如果两个事务中的操作行存在交集,两个事务不能并行执行。预提交功能就是将不存在交集的事务并行执行,将存在交集的事务串行执行。开启预提交功能后,事务在执行时,首先根据操作的行ROWID,判断是否存在ROWID对应的lock信息,如果存在,说明其他事务存在该数据的操作,当前事务需要等待其他事务完成该行的操作后才能继续执行;如果不存在,则其他事务没有对该行进行操作,于是生成该行的lock信息,当事务执行完成后,确认是否为事务所有的lock信息;DMHS中,控制lock信息个数的参数为lock_rows,现场中并未设置,导致lock信息并未生成,如果两个事务中存在数据交集,由于lock信息并未生成,两个事务就会并行执行,导致报错。
【解决办法】
        关闭预提交参数,关闭该参数不影响数据一致性,关闭后需监控延迟情况。
        现场环境版本配置文件暂时不能加lock_rows参数,该参数在此DMHS版本上存在问题,因此只能关闭commit_prepare参数。
【归档日志解析及同步流程】
        达梦解析源端数据库日志时,并不能根据交易日志,还原源端数据库的SQL操作,但可以实现源端数据库SQL操作的同等操作。对于DML操作,CPT模块以数据行为单位,对交易日志进行解析。DMHS目标端通过NET模块接收源端发送过来的日志
  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

保定公民

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值