给定一批 id,需要在一张叫表 dupicate_check 表里检查 id 是否存在,不存在就插入,并且要知道新 id 的数量,现在如下步骤
1. 查询 select id from dupicate_check id in ()
2. 返回结果和给定的 id 作差集,得到新 id 的数量
3. 把新 id 插入
现在的问题是,如果并发跑会有问题,两个线程同时得到一个不存在的 id 会同时插入,而且得到新 id 的总数量会偏大,要解锁这个得加读锁,性能又差,有没有更好的设计
1. 查询 select id from dupicate_check id in ()
2. 返回结果和给定的 id 作差集,得到新 id 的数量
3. 把新 id 插入
现在的问题是,如果并发跑会有问题,两个线程同时得到一个不存在的 id 会同时插入,而且得到新 id 的总数量会偏大,要解锁这个得加读锁,性能又差,有没有更好的设计