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

Zero impasse SQL por design - algum padrão de codificação?


Escrever código à prova de deadlock é muito difícil. Mesmo quando você acessa as tabelas na mesma ordem, ainda pode obter deadlocks [1]. Eu escrevi um post no meu blog que elabora algumas abordagens que ajudarão você a evitar e resolver situações de impasse.

Se você quiser garantir que duas instruções/transações nunca travarão, você poderá conseguir isso observando quais bloqueios cada instrução consome usando o sp_lock procedimento armazenado do sistema. Para fazer isso, você precisa ser muito rápido ou usar uma transação aberta com uma dica de bloqueio.

Notas:
  1. Qualquer instrução SELECT que precise de mais de um bloqueio de uma só vez pode travar em uma transação projetada de forma inteligente que captura os bloqueios na ordem inversa.