2

我在 SQL Server 2014 中处理内存中的表时遇到了一个大问题。

我知道 SQL Server 中没有 readpast 锁。但在某些情况下,它可能会导致性能下降。

假设一张表中有 20 条记录。每条记录都有一列LockStatus,其初始值为Wait

如果两个消费者想要选择前(10)条记录,会发生什么?

消费者一获取前 10 条记录并将其状态更改为Locked,当它使用它们时,第二个消费者尝试选择 top(10) 但它将被中止:

当前事务试图更新自该事务开始以来已更新的记录。交易被中止。

使用 readpast 锁,我们可以告诉消费者 2 选择第二个 10 条记录,而不是被中止。

4

0 回答 0