Deadlocks do SQL 2005: executando rastreios e examinando logs

1

Temos uma aplicação comercial de terceiros que acreditamos estar causando deadlocks em nossa máquina SQL Server 2005 (64 bits). Saindo de um 1 & Um dia de treinamento com o fornecedor do software na semana passada para nos ajudar a administrar melhor o software, estou fazendo algumas pesquisas sobre como usar melhor o SQL Server Profiler e os Modelos de Rastreamento para tirar o melhor proveito possível.

Meu lema pessoal é "se você é um fornecedor de software criando um aplicativo que requer que você possa se conectar remotamente ao servidor do cliente, então você está fazendo errado." Unforunately, não fazemos muita escolha agora.

Quanto mais eu conheço esses caras (vendedor de software), menos fico impressionado com eles - e quanto mais trabalho "nos bastidores" eu quero fazer sozinho. Por exemplo, temos tido problemas por meses com o servidor desacelerando para um rastreamento - mas, a partir de agora, não vejo absolutamente nenhum arquivo de rastreamento ou arquivo de modelo de rastreamento no sistema.

Para as minhas perguntas ...

  1. A execução de um arquivo de rastreamento afeta visivelmente o desempenho do servidor? Meu palpite é que a resposta será "depende". Se for esse o caso, aqui estão os "eventos" que selecionei no novo modelo de rastreamento que acabei de criar:

    • Gráfico de impasse
    • Bloquear: deadlock
    • Bloqueio: cadeia de impasse
    • RPC: concluído
    • SP: StmtCompleted
    • SQL: BatchCompleted
    • SQL: BatchStarting
  2. Um rastreamento teria que ser executado antes que o deadlock realmente ocorresse, ou eu seria capaz de executar o rastreamento no momento em que notarmos uma diminuição substancial no desempenho?

  3. Estou lendo dicas e técnicas para revisar os logs do SQL agora, já que isso não tem sido uma grande atenção. Quando entro no SQL Server Management Studio, entro em Management e SQL Server Logs, não consigo encontrar nada lá que diga "deadlock" / "deadlocked" etc ... Então, talvez nada esteja sendo travado. Alguém poderia confirmar para mim se os Deadlocks aparecerão ou não nos logs do SQL e, em caso afirmativo, o que eu posso usar nos meus critérios de pesquisa para encontrar as entradas?

por David W 21.11.2011 / 19:02

2 respostas

2

A execução de um rastreamento em um SQL Server afetará o SQL Server. A regra básica é que qualquer coisa que você faz no servidor leva recursos. Você pode causar problemas de desempenho executando um rastreamento ou o SQL Profiler no SQL Server? Sim, com certeza você pode se você não tiver nenhuma filtragem no lugar.

Se você estiver com problemas de deadlocking, ative as Sinalizadores de Rastreio 1204 e 1222 que exibirão a saída informações sobre o deadlock para o log de erros. Não deixe isso o tempo todo, pois eles afetarão o desempenho. As informações que são enviadas para o log de erros informam sobre as instruções que fazem parte do deadlock.

    
por 22.11.2011 / 06:24
1

No que diz respeito à execução de registros de diagnóstico como Rastreio , ele usa menos recursos do que Profiler , mas como sempre, a resposta depende das especificações do servidor e de quanto acontecendo de uma só vez durante a produção normal. Como você está apenas no SQL 2005, presumo que o hardware esteja um pouco longo no dente, o que significa que você deve ter cuidado ao executá-lo em uma caixa de produção. O que não é recomendado mesmo assim, ao tentar solucionar um problema semicegamente ou até mesmo em uma caixa totalmente nova.

Para # 2, se você está tentando capturar algo, IMO, você deve ter o diagnóstico em execução e, em seguida, executar o que causa o deadlock (supondo que você o tenha limitado a um motivo específico ou tipo de evento com o aplicativo, ou apenas o aplicativo em geral)

Infelizmente, não posso ajudar muito com o # 3.

    
por 21.11.2011 / 19:15