并发 saveorupdatebatch 丢失数据
时间: 2023-09-25 10:13:44 浏览: 94
SQL并行更新时丢失数据实例
MybatisPlus 的 `saveOrUpdateBatch` 方法默认是开启了 SQL 语句的批量执行的,而且每次批量执行的数据量也是有限制的。在高并发的情况下,如果多个线程同时执行 `saveOrUpdateBatch` 方法,可能会出现数据丢失的情况。
为了避免数据丢失,可以考虑使用数据库的乐观锁或悲观锁来保证数据的一致性。另外,也可以将数据拆分成多个批次进行处理,避免一次处理的数据量过大。
最好的解决方法是使用分布式锁来控制并发,确保同一时间只有一个线程能够执行 `saveOrUpdateBatch` 方法。常用的分布式锁有 Redis 分布式锁和 ZooKeeper 分布式锁等,可以根据具体情况选择合适的方案。
阅读全文