Open Felix0525 opened 1 year ago
@Felix0525
会有,同一个batch中存在乱序的可能,执行顺序会变成insert -> delete;
如果数据量小可以直接batch size设为1(强制数据有序),来规避; 或,修改代码每次遇到delete语句就强制flush一次; 我生产delete使用较少,就没怎么修改过这块;
感谢回答,我还有个想法,就是计算下同个key,在同一批里去重,但是可能需要一些空间额外存储下
感谢回答,我还有个想法,就是计算下同个key,在同一批里去重,但是可能需要一些空间额外存储下
嗯嗯,这是个很好的方法;
@Felix0525 如果采用自增ID应该没这个问题,主键设置成ID,先删后增也是没有问题的
依照代码逻辑: 路径:ClickHouseUpsertExecutor.java 中的executeBatch方法
如上代码片段:如果存在以下这样的数据流(恰好在一次flush里),会不会导致1001最终被删除。
操作 主键KEY -删除 1001 +新增 1001
原因:执行statement的顺序是按照Insert、update、最后delete的。
期望得到解答,谢谢