Recentemente, um de nossos aplicativos ASP.NET exibiu um erro de impasse no banco de dados e fui solicitado a verificar e corrigir o erro. Consegui descobrir que a causa do impasse era um procedimento armazenado que atualizava rigorosamente uma tabela dentro de um cursor.
Esta é a primeira vez que vi esse erro e não sabia como controlá-lo e corrigi-lo de forma eficaz. Tentei de todas as maneiras possíveis que conheço e finalmente descobri que a tabela que está sendo atualizada não possui uma chave primária! felizmente, era uma coluna de identidade.
Mais tarde, achei o desenvolvedor que criava scripts para o banco de dados para implantação. Eu adicionei uma chave primária e o problema foi resolvido.
Senti-me feliz e voltei ao meu projeto, e fiz algumas pesquisas para descobrir o motivo desse impasse ...
Aparentemente, foi uma condição de espera circular que causou o impasse. Aparentemente, as atualizações levam mais tempo sem uma chave primária do que com a chave primária.
Eu sei que não é uma conclusão bem definida, é por isso que estou postando aqui ...
- A chave primária ausente é o problema?
- Existem outras condições que causam impasse além de (exclusão mútua, espera e espera, sem preempção e espera circular)?
- Como evito e acompanho os impasses?