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?
sql-server
sql-server-2008
performance
profiler
Jon Seigel
fonte
fonte
Respostas:
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.
fonte
Se você usar o rastreamento do lado do servidor , o impacto no desempenho poderá ser minimizado.
fonte
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.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.
fonte
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.
fonte
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.
fonte