Como monitorar deadlocks

11

Quando você começa a solucionar problemas de deadlocks do SQL Server 2005/2008 e como? O alerta é ativado no SSMS via alerta de condição de desempenho do SQL Server, objetos-> SQLServer: Bloqueios, contador-> espera de bloqueio / segundo, instância: _Total, alerta se contador: ultrapassa o valor 3. Essa é uma maneira proativa de monitorá-lo? Qual é o valor aceitável? Eu apreciaria muito sua ajuda. Obrigado!!!

db7
fonte

Respostas:

3

A primeira coisa a fazer é olhar para o gráfico de deadlock e ver exatamente o que está acontecendo. Depois, você pode considerar suas opções, que geralmente se resumem em a) modificar o aplicativo para padronizar em uma ordem de bloqueio de objetos (por exemplo, se possível, dada a lógica do aplicativo, faça uma convenção com seus desenvolvedores para sempre bloquear tabelas em ordem alfabética) ou b ) veja se você está realmente operando no nível de isolamento apropriado em cada transação.

Gaius
fonte
De acordo com stackoverflow.com/a/112256/14731, uma ordem de bloqueio consistente não impede conflitos.
Gili
3

Eu iria com rastreamento automático do lado do servidor de 2 questões principais:

  • consultas longas (você estabelece uma duração longa para o seu ambiente)

  • deadlocks - verifique o gráfico de Deadlock e a cadeia Lock: Deadlock

Você receberá arquivos de rastreamento todos os dias e poderá monitorar a ação - veja se algum evento agendado está causando problemas. Você pode ver mais detalhes sobre criação de perfil de produção nesta pergunta: Usando o SQL Profiler em um banco de dados em produção .

Marian
fonte
1

System Center Operations Manager (SCOM) com o Pacote de Gerenciamento do SQL Server pode alertar sobre os impasses se você habilitar o registro de mensagem de 1205. Você pode habilitá-lo com a seguinte consulta SQL: EXEC sp_altermessage 1205, 'WITH_LOG', 'true'.

Além disso, consulte minha resposta para "Por que o nome do objeto e o nome do índice não são preenchidos no gráfico de deadlock?" para um script do PowerShell que escrevi que extrai informações de deadlock do buffer de eventos e grava os gráficos de deadlock como arquivos xdl que podem ser abertos no SQL Management Studio 2012 ou superior ou visualizados no bloco de notas para ver mais detalhes.

JamieSee
fonte