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!😊

 

Por Alencar Flores Bonalume

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Artigos Recentes

Alta Disponibilidade De Postgres No Azure

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: [email protected]
Telefone: (54) 3401-1471

Abrir bate-papo
Olá
Podemos ajudar?