我之前是用TiDB做的实时数仓,主要是跑OLAP任务,现在想从TiDB迁移到OceanBase但有个问题是,我这边实时数仓需要大量的upsert操作,主要是以INSERT INTO ON DUPLICATE KEY UPDATE为主,而且部份表可能会涉及几十万到几百万的数据更新,这就会导致大事物的问题。
在TiDB那边,我用了一个官方不推荐使用的batch-dml功能,因为TiDB的非事务DML不支持子查询,其实就是把大事物拆成了小事务,比如本来是一个一百万数据的大事物,使用他的batch-dml,就可以把他的这一百万拆成每一万提交一次,提交100次,从而避免大事物产生
现在我想迁移到OceanBase,遇到的问题是,PDML并不支持INSERT INTO ON DUPLICATE KEY UPDATE的方式,也没有发现有拆事务的功能,就不知道还有什么方式能实现大批量数据的upsert,最好是非事务性的