1

我有一个具有以下结构的表:

  ID     NAME     STATUS

  1      Item1    Pending

  2      Item2    Pending

  3      Item3    Pending

  ........................

我使用存储过程将表的前 N ​​行(状态为“待处理”)更新为状态“处理中”并返回受影响的行。片段:

    UPDATE TOP (@size) sample_table
    SET status = "PROCESSING"
    OUTPUT inserted.*
    WHERE status = 'PENDING'

这按预期工作。现在,当我有多个运行上述 SQL 代码脚本的应用程序实例时,就会出现问题。

我需要确保没有 2+ 个实例在相同的数据上运行上述。

我可以简单地锁定表以进行操作,但将来我将在该表中拥有数千个条目,因此这会影响性能。

我一直在阅读 ROWLOCK ,它似乎符合我的要求,但我看到查询优化器忽略了 ROWLOCK (或提升为表锁)的帐户。

使用 ROWLOCK 是否适合我的用例?有没有更好的方法来解决这个问题?

4

0 回答 0