Histórico de Deadlocks: Uma Exploração Detalhada

Olá, Pessoal!

Neste post vamos apresentar um guia passo a passo sobre como criar um coletor no Extended Events (XE) do SQL Server e uma query que retorna os dados do coletor para análise dos deadlocks que ocorreram durante o período da coleta.

Conceituando inicialmente estas terminologias, os deadlocks ocorrem quando uma transação fica bloqueada, aguardando o término de uma segunda transação que, por sua vez, está esperando a conclusão da primeira. Isso cria uma dependência entre elas que nunca será resolvida.

O Extended Events (XE) é uma ferramenta do SQL Server para coletar informações detalhadas sobre eventos internos do sistema. Para identificar deadlocks usando Extended Events, vamos criar uma sessão que capture os eventos relacionados a deadlocks.

Na ferramenta SQL Server Management Studio (SSMS), utilizaremos o seguinte caminho para criar nosso coletor:

Object Explorer -> Management -> Extended Events -> New Session Wizard

Os campos devem ser preenchidos com as seguintes informações:

Set Session Properties – Adicionaremos um nome para o nosso coletor e marcaremos a opção para que inicie a sessão do evento na inicialização do servidor.   

Choose Template – Deixamos como padrão, não utilizaremos template.

Select Events To Capture – Selecionaremos apenas o evento ‘cml_deadlock_report’.

Capture Global Fields – Selecionamos os seguintes campos:

Set Session Events Filters – Nesta tela podem ser aplicados os filtros, se desejar. Nesta demonstração não utilizaremos filtros.

Specify Session Data Storage – Deixaremos os logs para serem salvos no seguinte diretório ‘C:\Deadlock\’, com o tamanho do arquivo de, no máximo, 1GB.

Summary – Resumo das configurações da sessão.

Após a conclusão da criação da sessão, já podemos observar que ela está ativa.

Como gerar um DEADLOCK:

Nesta próxima etapa, realizaremos uma simulação para demonstrar como é gerado um deadlock entre duas tabelas, a fim de validar a funcionalidade do nosso coletor.

Na demonstração a seguir, apresentamos o script utilizado para simular um deadlock. Ao executar a última parte, recebemos uma mensagem indicando a ocorrência de um deadlock entre os dois processos (Process ID 59 e outro processo). O SQL Server identificou a transação com o Process ID 59 como a vítima do deadlock, encerrando-a.

Por fim, com a consulta abaixo é possível visualizar os deadlocks capturados pelo nosso coletor durante o período em que o mantivemos em execução.

Temos um post informativo em nosso blog explicando o que são Locks, Blocks e Deadlocks, no contexto do SQL Server. Se você estiver interessado em aprofundar seu entendimento sobre os tipos de bloqueio, confira o artigo completo: O Que São Locks, Blocks e Deadlocks – CDB Data Solutions

Espero que este artigo tenha sido esclarecedor e útil para ajudar você a lidar com situações em que deadlocks são uma preocupação.

Até o próximo post!😊

Categorias

Artigos Recentes

Um Pouco sobre a LGPD – Lei Geral de Proteção aos Dados

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

Abrir bate-papo
Olá
Podemos ajudar?