324 Star 2.4K Fork 857

AE86/DBSyncer

 / 详情

增量更新批量写入优化导致数据更新顺序被打乱

已完成
创建于  
2022-08-03 20:49

问题出现的场景:
设增量同步 源表A,目标表B,源表连续执行以下sql:
insert into A(id,....)value(2,....);
delete form A where id=1;
insert into A(id,....)value(1,....);

现象:
增量同步后,A表有id为1的数据,B表没有。

原因分析:
发生问题的代码AbstractBufferActuator.flush()
分组之后数据为:(设增量更新的驱动id=123456)
123456-INSERT => [{id:2,.....},{id:1,.....}]
123456-DELETE => [{id:1,.....}]
程序会按照顺序从上到下将数据更新到目标表,原来在最后执行的insert操作被合并到了上边。导致B表数据缺失。

评论 (0)

square-knight 创建了任务
square-knight 添加了
 
bug
标签
AE86 任务状态待办的 修改为进行中
AE86 任务状态进行中 修改为已完成
AE86 任务状态已完成 修改为进行中
AE86 任务状态进行中 修改为已完成
展开全部操作日志

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
1546530 github 18032717 1663206346
Java
1
https://gitee.com/ghi/dbsyncer.git
git@gitee.com:ghi/dbsyncer.git
ghi
dbsyncer
DBSyncer

搜索帮助

Cb406eda 1850385 E526c682 1850385