并发的时候,如何避免重复取同一条记录?
直接看代码
declare @id int
SELECT top 1 @id=ID FROM Redpackage ORDER BY ID
UPDATE Redpackag SET ZT=‘已领取’, WHERE ID=@ID
当100个线程同时开时,发现都是更新同一条记录
于是增加了**with (tablockx)**可以解决问题
declare @id int
SELECT top 1 @id=ID FROM Redpackage with (tablockx) ORDER BY ID
UPDATE Redpackag SET ZT=‘已领取’, WHERE ID=@ID
但是发现并发的速度就慢了,如何既要能快速并发又要不重复呢?