Dicas para um DBA Iniciante – Listar deadlocks utilizando a system_health

Fala galera, tudo bem com vocês?

Muita gente tem pedido para compartilhar os principais scripts que utilizo para gerenciar um ambiente de banco de dados SQL Server e por isso montei uma lista com os que são mais úteis.

O script de hoje é referente a monitoração de Deadlocks (que encontrei no site do Pinal Dave) e é extremamente útil porque utiliza a sessão de sistema system_health, dos extended events.

 
SELECT XEvent.query('(event/data/value/deadlock)[1]') AS DeadlockGraph
FROM (
    SELECT XEvent.query('.') AS XEvent
    FROM (
        SELECT CAST(target_data AS XML) AS TargetData
        FROM sys.dm_xe_session_targets st
        INNER JOIN sys.dm_xe_sessions s ON s.address = st.event_session_address
        WHERE s.NAME = 'system_health'
            AND st.target_name = 'ring_buffer'
        ) AS Data
CROSS APPLY TargetData.nodes('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData(XEvent)
) AS source;

Espero que gostem e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço a todos.

Anúncios
  1. Joni
    04/09/2018 às 15:09

    Vitão, show de bola este post, mas tenho uma duvida, como evitar que os deadlocks ocorram.

    • 24/09/2018 às 11:17

      E ai Joni, tudo bem?
      Temos de avaliar quais os objetos que estão presentes no deadlock e entender se a forma como estão sendo acessados está correta, por exemplo, se não está sendo realizado um full scan ao invés de um index seek.
      A criação de novos índices pode ajudar com certeza.

  2. Heitor Rocha Arantes
    09/09/2018 às 16:05

    Vitor, boa tarde!

    Para evitar deadlocks, uma das soluções poderia adicionar with(Nolock) ? Conforme exemplo abaixo.

    SELECT * FROM TabelaPessoas WITH (NOLOCK)

    Obrigado.

    • 24/09/2018 às 11:18

      E ai grande Heitor, tudo bem?
      A melhor forma de evitar os deadlocks é avaliar quais os objetos que estão presentes no deadlock e entender se a forma como estão sendo acessados está correta, por exemplo, se não está sendo realizado um full scan ao invés de um index seek.
      A criação de novos índices pode ajudar com certeza.

  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogueiros gostam disto: