并发的时候,如何避免重复取同一条记录?
直接看代码
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
但是发现并发的速度就慢了,如何既要能快速并发又要不重复呢?
探讨在高并发场景下,如何避免多个线程或进程同时选取并更新同一数据库记录的问题。通过使用`tablockx`锁定机制虽能解决重复更新,但降低了并发处理速度。寻求既能保证并发效率又能避免重复操作的优化方案。

1408

被折叠的 条评论
为什么被折叠?



