大型 SQL Server 2008 表通常使用 SNAPSHOT ISOLATION 事务以(相对)较小的块进行更新。快照对于这些更新非常有效,因为这些块永远不会重叠。这些更新不是单个长时间运行的操作,而是按事务分组的许多小的单行插入/更新。
我想要一个较低优先级的事务来更新当前未锁定的所有行。有谁知道我怎么能得到这种行为?另一个 SNAPSHOT ISOLATION 事务会在一行发生冲突时立即失败,还是会在失败前更新所有可能的内容?
SET DEADLOCK_PRIORITY LOW
try-catch 有什么帮助吗?也许在重试循环中WHERE
只针对尚未更新的行?