JFinal 多线程多数据源,mysql 的 on duplicate key up 语法,丢失部分数据,插入75万不重复数据,丢失50-3000不等。
数据来源为消息中间件,每一批数据提出时都校验其数量为1000,中间件压力正常,分为两个实例进行集群消费,大压力下数据莫名丢失,波总测试过多线程多数据源大量数据插入不~
如果你用到 Db.batch 系的方法,注意 batchSize 值不要太大,否则会在超出数据库某个值的时候自动提交,这样在回滚事务的时候,那些被提交的数据就不能回滚了
我一般设置在 5000 以内
我看到你用了 on duplicate key up,那么你得注意是不是数据没有丢失,只是数据存在时没有 insert 而只是进行了 update。
此外,据说 on duplicate key up 有坑,你再多了解一下