1

我们有一个表,我们在其上使用锁 SELCT TOP 1 ... (WITH (UPDLOCK, READPAST)) 实现了一个排队系统。直到最近,当我们将一列添加到与第一个表具有 FK 关系的另一个表中时,它一直运行良好。我必须在使用锁的查询中添加这一点,我们在第二个表上进行连接。

现在,在添加列之后,我们似乎在查询运行时得到了非常频繁的锁定和超时。

这可能与新专栏有关吗?可以做些什么来解决?

我们使用 Telerik ORM 来运行存储过程。

4

1 回答 1

1

如果您要加入另一张桌子,您可能也需要该桌子上的表格提示。是否有其他交易触及另一张桌子?如果是这样,那么它显然会增加死锁的机会。

为了在 SQL Server 表中实现队列,我发现这个答案是一个很好的参考,它建议WITH (ROWLOCK, READPAST, UPDLOCK). 您可能会获得超出 ROW 的锁定升级,这可能会导致您看到的问题。尝试添加该提示,看看它是否可以解决问题。还要确保您仅对命中该表或引用表的其他查询进行 ROW 锁定。

于 2014-03-06T09:57:57.507 回答