Índice:

O que causa deadlocks no banco de dados?
O que causa deadlocks no banco de dados?

Vídeo: O que causa deadlocks no banco de dados?

Vídeo: O que causa deadlocks no banco de dados?
Vídeo: O que é DEADLOCK e como MONITORAR no SQL Server 2024, Novembro
Anonim

UMA impasse acontece quando duas (ou mais) transações se bloqueiam, mantendo bloqueios nos recursos de que cada uma das transações também precisa. Por exemplo: a transação 1 bloqueia a Tabela A. A maioria das pessoas escreverá isso impasses não pode ser evitado em um multiusuário base de dados.

Portanto, o que são bloqueios no banco de dados?

Deadlocks . Em um base de dados , uma impasse é uma situação em que duas ou mais transações estão esperando uma da outra para desistir dos bloqueios. Por exemplo, a Transação A pode bloquear algumas linhas na tabela Contas e precisa atualizar algumas linhas na tabela Pedidos para terminar.

Saiba também, uma seleção pode causar um deadlock? 2 respostas. Impasse acontece quando uma consulta obtém um bloqueio em um objeto (linhas, páginas de dados, extensão, tabelas etc.) e outro recurso tenta acessá-lo. A menor unidade no SQL Server são as páginas de dados e o SQL bloqueia a página enquanto trabalha nela. Então, sim, é possível que dois selecionar demonstração posso Criar impasse.

Além disso, como podemos evitar deadlock no banco de dados?

Dicas para evitar deadlocks

  1. Certifique-se de que o design do banco de dados esteja normalizado corretamente.
  2. Desenvolva aplicativos para acessar objetos de servidor na mesma ordem todas as vezes.
  3. Não permita nenhuma entrada do usuário durante as transações.
  4. Evite cursores.
  5. Mantenha as transações o mais curtas possível.

Como você conserta um impasse?

Um desenvolvedor inteligente deve seguir as seguintes etapas para se recuperar de um deadlock:

  1. Verifique o número de erro 1205, quando uma exceção é lançada.
  2. Pause o aplicativo brevemente para dar à outra consulta tempo para concluir sua transação e liberar seus bloqueios adquiridos.
  3. Reenvie a consulta, que foi revertida pelo SQL Server.

Recomendado: