Большая таблица SQL Server 2008 обычно обновляется небольшими порциями с использованием транзакции SNAPSHOT ISOLATION. Снимок работает очень хорошо для этих обновлений, так как блоки никогда не перекрываются. Эти обновления представляют собой не одну длительную операцию, а множество небольших однострочных вставок / обновлений, сгруппированных по транзакции.
Я бы хотел, чтобы транзакция с более низким приоритетом обновила все строки, которые в данный момент не заблокированы. Кто-нибудь знает, как я могу получить это поведение? Произойдет ли сбой другой транзакции SNAPSHOT ISOLATION, как только произойдет столкновение строки, или он обновит все, что может, до сбоя?
Может ли SET DEADLOCK_PRIORITY LOW
с попыткой поймать какую-нибудь помощь? Может быть, в цикле повтора с WHERE
, который нацелен только на строки, которые не были обновлены?