O SQL Profiler afeta o desempenho do servidor?

11

Estou enfrentando um problema em que o sql server 2008 falha por uma carga alta. Preciso encontrar esse caso de carga e otimizar o código para que ele possa lidar com a carga. Eu descobri na internet que o SQL Profiler pode ser usado para rastrear as interações com o banco de dados que podem ser analisadas posteriormente para encontrar o ponto exato em que o problema ocorre. Eu também descobri como podemos iniciar o sql profiler. Mas agora minha pergunta é que, ao iniciar o sql profiler, vou afetar o desempenho do servidor?

Jon Seigel
fonte
5
sim. Depende de como e onde você o executa. Feito da maneira certa, pode ser apenas uma carga extra de alguns por cento.
Mitch Wheat
3
Eventos estendidos podem ser uma opção mais leve.
Martin Smith

Respostas:

10

O SQL Server Profiler é uma GUI que utiliza o SQL Server Trace no lado do cliente. Devido a essa natureza, sim, você pode ver um impacto leve a grave no desempenho, dependendo do ambiente.

O SQL Server Profiler é adequado principalmente para uma rápida visão do que está acontecendo no servidor (desde que o servidor de banco de dados possa lidar com a latência extra). Não se destina a ser executado por longos períodos de tempo. Para rastreamentos mais longos, use um rastreamento do lado do servidor ou Eventos Estendidos.

Thomas Stringer
fonte
+1 mesmo um rastreio de perfil muito curto, dependendo de muitos fatores, pode prejudicar um servidor.
Aaron Bertrand
3

Se você usar o rastreamento do lado do servidor , o impacto no desempenho poderá ser minimizado.

David Brabant
fonte
Meu servidor e banco de dados estão instalados na mesma máquina. Agora, se eu iniciar o sql profiler em "Microsoft SQL Management Studio -> Ferramentas-> SQL profiler", quanta degradação do desempenho posso esperar e com base em quais fatores?
Ele se baseia em quão ocupado o servidor está, em quantos eventos e quantas colunas seu rastreio consiste e em sua filtragem. A filtragem pode afetar nas duas direções - de uma maneira, pode reduzir o número de linhas retornadas à interface do usuário (a parte que realmente faz com que o profiler prejudique mais do que o rastreamento do lado do servidor), mas, por outro lado, se você escolher uma opção inadequada filtro (por exemplo textdata LIKE '%foo%'), pode ter o efeito oposto. Existem muitas variáveis ​​para fornecer alguma expectativa mágica, você só precisa tentar. Você realmente deveria estar usando um rastreamento do lado do servidor.
Aaron Bertrand
Experimente este link se você não conseguir acessar o original.
Marc Lopez
3

Tudo o que os pôsteres anteriores disseram está correto. O Profiler é um aplicativo que, a certa altura, usava o DMO e agora usa o SMO para capturar eventos de rastreamento. Isso adiciona uma enorme quantidade de sobrecarga em comparação com o simples uso de um rastreamento do lado do servidor.

O SMO é uma API que adiciona uma "camada" adicional ao processo de rastreamento junto com um aplicativo cliente, Profiler. Um rastreamento do lado do servidor lerá os eventos de rastreamento diretamente de uma fila de transações, cuja sobrecarga resultante é desprezível.

Consegui executar rastreamentos do servidor em ambientes SQL Server que processam mais de 10.000 transações por segundo. O uso do Profiler nesses mesmos ambientes trará a instância do banco de dados de joelhos. Em qualquer ambiente de produção, se você precisar rastrear a atividade do banco de dados, use sempre um rastreamento do lado do servidor. O Profiler matará a instância do banco de dados.

Christopher W. Szabo
fonte
2

Sim, o SQL Server Profiler afeta o desempenho.

Quando você rastreia usando a GUI, todos os eventos são processados ​​e filtrados de forma síncrona; portanto, fatores como carga do servidor, latência da rede, quais eventos você coleta e mesmo onde os eventos coletados são armazenados contribuem para a sobrecarga.

Como outras respostas sugeriram, é preferível usar um rastreamento do lado do servidor em vez da GUI. No entanto, esse método está obsoleto e os Eventos Estendidos devem ser usados. (Nota: mesmo usando Eventos Estendidos, que são mais leves que um rastreio, ainda é possível adicionar uma quantidade indesejável de carga ao servidor - consulte a lista no meu segundo parágrafo para pensar em como minimizar a sobrecarga ao configurar um evento sessão.)

No caso de um servidor muito carregado, você precisa ter muito cuidado com as informações que estão sendo coletadas, pois o próprio processo de medição pode afetar o problema que está sendo investigado.

Jon Seigel
fonte
0

O SQL Server Profiler funciona em duas etapas: primeiro você diz para registrar todas as consultas. Em seguida, você executa algumas transações típicas (ou apenas deixa registrar na produção). Isso cria uma "carga de teste". Em seguida, você faz o perfil real (análise) usando a carga de teste.

O registro não é muito caro, especialmente se comparado ao custo das próprias consultas.

egrunin
fonte
Meu servidor e banco de dados estão instalados na mesma máquina. Agora, se eu iniciar o sql profiler através do "Microsoft SQL Management Studio -> Ferramentas-> SQL profiler", quanta degradação do desempenho posso esperar e com base em quais fatores?