在多线程处理表数据的时候 怎么防止数据被重复处理
1个回答
展开全部
其实这个不是加锁的问题,而是数据分发的问题。加锁是为了防止高并发下产生脏数据,而你其实是希望处理过或者已被其他线程先拿到的数据不要再处理了,对吧?
如何进行数据分发,提高集群(或多线程)处理效率,这个要结合你们的数据模型来考虑。
比如处理的数据ID中有数字标识,当前你有10台机器或者10个线程,那么可以让这10台机器各自读取1/10的数据,这可以通过取余(%10)做到。比如第1台机器读取i%10==1的ID的数据,第2台读取i%10==2的,以此类推。
如何进行数据分发,提高集群(或多线程)处理效率,这个要结合你们的数据模型来考虑。
比如处理的数据ID中有数字标识,当前你有10台机器或者10个线程,那么可以让这10台机器各自读取1/10的数据,这可以通过取余(%10)做到。比如第1台机器读取i%10==1的ID的数据,第2台读取i%10==2的,以此类推。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询