Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Deadlocks do SQL Server entre selecionar/atualizar ou várias seleções


Isso pode acontecer porque um select faz um bloqueio em dois índices diferentes, enquanto uma atualização faz um bloqueio nos mesmos índices na ordem oposta. O select precisa de dois índices porque o primeiro índice não cobre todas as colunas que ele precisa acessar; a atualização precisa de dois índices porque, se você atualizar a coluna de chave de um índice, precisará bloqueá-la.

http://blogs.msdn.com/bartd/archive /2006/09/25/770928.aspx tem uma explicação fantástica. As correções sugeridas incluem adicionar um índice que abrange todas as colunas que a seleção precisa, alternar para o isolamento de instantâneo ou forçar explicitamente a seleção a obter um bloqueio de atualização que normalmente não precisaria.