Clicky

Fale Conosco

Converse com nossos especialistas e descubra como transformar seus dados em informações seguras, disponíveis e acessíveis.

Endereço

Rua Angelo Antonello, 93 – Sala 62, Centro – Farroupilha/RS – CEP: 95170-492

Contato Comercial

Email: contato@cdbdatasolutions.com.br
Telefone: (54) 3401-1471

,

O Que São Locks, Blocks e Deadlocks

  • Por Alencar Bonalume e Tiago Crespi
  • 20/04/2023
  • 353 Visualizações

Olá, pessoal!

Hoje veremos um pouco sobre lock, block e deadlock, a funcionalidade de cada um e qual impacto que pode causar no SQL Server.

Lock é um mecanismo usado pelos SGBDs (Sistemas Gerenciadores de Bancos de Dados) para garantir a integridade dos dados durante as transações, são normais em qualquer banco de dados relacional e, dependendo da infraestrutura e das características da aplicação, podem ocorrer diversas vezes por segundo.

Ainda servem como uma marca, dizendo que aquele registro, tabela ou página de dados que está sendo usado, não pode ser alterado. Um lock pode afetar o desempenho do SQL Server, visto que poderá criar contenção de recursos, levando a tempos de espera mais longos para os usuários.

Já os blocks acontecem quando há uma tentativa de acesso a um recurso que está em lock por outra transação, o que por sua vez, gera um bloqueio que aguardará o recurso da primeira execução ser liberado.

Estas situações de bloqueio são tão comuns quanto os locks. É possível afirmar que, o excesso de bloqueios pode ser derivado de problemas de design de artefatos de banco de dados, ou implementação das queries. A frequência excessiva de bloqueios, ou o excesso de tempo de retenção pode gerar problemas em todo o ambiente, deixando as outras queries mais lentas, porque elas ficam aguardando os recursos necessários.

É importante que os administradores de bancos de dados gerenciem esses bloqueios, para garantir o desempenho ideal e para evitá-los.

Os deadlocks ocorrem quando uma transação entra em block, ou seja, aguardando uma segunda transação terminar, porém esta segunda transação está aguardando o término da primeira. Isto gera uma dependência entre eles que nunca será resolvida.

Como esses processos nunca terão fim por estarem um aguardando o término do outro, o próprio SQL Server decide qual processo deverá ser anulado através de um algoritmo. Em alguns casos, o SQL Server não conseguirá decidir e ficará a cargo do DBA definir a prioridade dos processos e qual deve ser finalizado, liberando assim o deadlock.

Os deadlocks podem incidir em qualquer nível de granularidade, registros, tabela ou página de dados. Eles podem ser ocasionados por vários fatores, como bloqueios em cascata, atualização em massa, transações longas, indisponibilidade de recursos etc.

Esperamos que tenham gostado do assunto abordado e até o próximo post! 😊

Abrir bate-papo
Olá! Somos especialistas em Infraestrutura e Inteligência de Dados.
Como podemos ajudá-lo?