Criando o monitoramento da linha de base de desempenho do SQL Server


8

Para obter uma visão geral e dados comparáveis, minha tarefa atual é criar uma linha de base de desempenho para obter alguns números sobre as diferentes instâncias produtivas do SQL Server.

Meus pensamentos são:

  • Eu quero usar vários DMVs
  • Quero incluir um rastreamento de criador de perfil (incluindo planos de execução)
  • Eu quero incluir dados perfmon

Então, o que eu tento alcançar é um monitoramento geral do desempenho inicializável e interrompível (também programável) que retorna:

  1. Todas as informações necessárias para identificar o sucesso das tarefas de otimização de desempenho em andamento

  2. Duas figuras simples e agregadas que ajudam a visualizar o progresso a longo prazo. Esp. para gerenciamento ;-)

  3. Planos de execução reexecutáveis ​​no rastreio do criador de perfil para comparar alterações e melhorias individuais na fila por tarefas de otimização de índice

Encontrei algumas informações descrevendo a criação de linhas de base de desempenho. A maioria deles é muito complicada ou concentra-se apenas em um dos indicadores de desempenho desejados (principalmente dados perfmon).

O exemplo / descrição mais correspondente foi o seguinte: Criando uma linha de base de desempenho para o SQL Server

A questão é:

Alguém tem experiência em criar esse tipo de monitor de desempenho de maneira rápida e viável?


3
Um pouco de informação que você pode começar a partir de Brent Ozar Sp_Blitz mais alguns links de referência aqui e aqui
shanky

3
Penso que a resposta curta é: Não. Você precisa reservar um tempo para descrever o que é necessário para basear o desempenho. Com base nessa avaliação, é necessário reunir as consultas para reunir as informações e criar os objetos db para armazenar as informações. Além da sugestão de @ Shanky, você também pode usar sp_whoisactive para coletar informações úteis
tommyfly

6
Você também pode considerar uma ferramenta de terceiros que faz a linha de base (e muito além disso). O que você está propondo é reinventar muito trabalho que outras pessoas já fizeram. Não, eles não são gratuitos, mas também não é o seu tempo (e a gerência estará ciente disso).
Aaron Bertrand

Oi Aaron, você pode por favor fornecer uma ferramenta de terceiros que faz isso
TheGameiswar

3
Vá para SQLSentry . Eu tinha usado isso no meu trabalho anterior e sua uma excelente ferramenta + tem excelente suporte e as pessoas na comunidade como @AaronBertrand :-)
Kin Shah

Respostas:


8

Mais de um ano depois, quero que todos saibam minha experiência e o resultado final desta pergunta / tópico.

Comecei criando coisas por conta própria. Inicialmente, segui o Artigo Coletar e armazene dados históricos do contador de desempenho do SQL Server com CMVs de Tim Ford para obter algo e estendê- lo com os Dados que eu desejasse coletar. Portanto, uma vez por dia, eu executo vários procedimentos armazenados em cada servidor Sql que coletam algumas informações específicas de DMVs e armazenam os resultados no servidor local dentro de um banco de dados. Isso inclui o uso de índices, índices ausentes, entradas de log específicas, como crescimento automático, configurações do servidor, configurações do banco de dados de aplicativos, fragmentação, execução de tarefas, informações de log de transações, informações de arquivos, estatísticas de espera e muito mais.

Além disso, adicionei os resultados da execução sp_blitz do Brent Ozar regularmente neste repositório para coletar indicações valiosas adicionais para trabalhar, melhorar e relatar.

Todos os dados são coletados posteriormente em um Sql Server de monitoramento dedicado e, dessa forma, crio um armazenamento agrupado para obter informações relevantes sobre o desempenho de todos os meus servidores e utilizo isso como base para investigação e geração de relatórios.

Em seguida, criei folhas de excel e também relatórios usando serviços de relatório para analisar e interpretar. Algumas amostras:

insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

Também configurei alguns contadores de desempenho que monitoram usando TYPEPERF, inspirado no artigo " Coletando dados de desempenho em uma tabela do SQL Server ", de Fedor Georgiev.

Na minha instância do SQL Monitoring, aciono o typeperf para executar e coletar um número configurável de amostras com um intervalo de amostras configurável e armazenar os resultados no meu banco de dados de monitoramento central.

Isso me permite observar valores de desempenho a longo prazo, exemplo:

insira a descrição da imagem aqui

Depois de um tempo usando isso para coletar informações de linha de base, reduziu-se o fato de que é necessário muito trabalho de manutenção para procurar trabalhos com falha, procedimentos de remoção de erros (por exemplo, no caso de um banco de dados ter sido colocado offline, alguns scripts falharam), mantendo as configurações após a substituição de um servidor ...

Além disso, o banco de dados que coleta todos os registros precisa de ajustes de manutenção e desempenho, para que surjam trabalhos adicionais para manter os dados úteis ...

O que está finalmente faltando é a capacidade de ver as coisas que acontecem ao vivo. No Best Case, poderei dizer o que possivelmente estava acontecendo no dia seguinte após a execução dos coletores de dados. Todos os detalhes também estão faltando. Não tenho acesso a gráficos de impasse, não consigo ver os planos de consultas que estavam sendo executadas em um período suspeito ...

Tudo isso me fez cobrar da gerência gastar dinheiro com uma solução pré-profissional que não sou capaz de criar sozinha.

A escolha final foi comprar o SentryOne porque, em comparação com outros, é convincente e fornece muitas informações necessárias para identificar nossos pontos negativos.

Como conclusão final, aconselho quem procura respostas para perguntas semelhantes a não tentar criar as coisas por conta própria, desde que você não tenha um ambiente pequeno e basicamente saudável. Se você tiver alguns sistemas e muitos problemas, procure imediatamente uma solução profissional e use a assistência do fornecedor em seus problemas, em vez de gastar muito tempo e dinheiro para criar algo menos útil. No entanto, essa rota ainda era muito interessante e me fez aprender muito que não quero perder.

Espero que você ache isso útil depois de encontrar este segmento de perguntas.

EDIT 20 de abril de 2017: Brent Ozar publicou recentemente o seguinte artigo no facebook, que é uma abordagem semelhante adotada pela equipe do SQL Tiger: https://blogs.msdn.microsoft.com/sql_server_team/sql-server-performance-baselining -relatórios-desencadeados-para-monitoramento-corporativo /


2
Fico feliz que você tenha chegado à mesma conclusão e esteja exatamente certo, seu tempo é muito melhor gasto em consertar seus problemas reais em vez de reinventar a roda. Sua roda parece particularmente brilhante: D
ConstantineK

6

Aqui estão alguns bons artigos com alguns exemplos práticos que você pode encontrar aqui:

Como detectar problemas de desempenho do SQL Server usando linhas de base - Parte 1 - Introdução

Como detectar problemas de desempenho do SQL Server usando linhas de base - Parte 2 - Coletando métricas e relatórios

Como detectar problemas de desempenho do SQL Server usando linhas de base - Parte 3

Embora a Parte 1 forneça alguns conhecimentos básicos sobre o que é a linha de base, na Parte 2 você encontrará informações sobre como fazer isso por conta própria, usando o método "homem pobre" (é gratuito e bom para aprender)

A Parte 3 fornece alguns exemplos de como você pode estabelecer linhas de base e como usá-las na solução de alguns problemas via ApexSQL Monitor


4

Como um DBA razoavelmente recém-formado, executei a gama de ferramentas gratuitas e fiz algumas experiências no espaço pago (DPA, SQL Sentry e Foglight) e realmente depende do que você deseja para a ferramenta.

Na minha experiência, o mais importante não era apenas comunicar linhas de base de desempenho (a gerência não se importava, a menos que houvesse alguém para gritar), mas produzir algo em um formato fácil de consumir, que deixava as prioridades claras e era capaz de rastrear o desempenho questões na produção.

Você pode absolutamente desenvolver suas habilidades seguindo o caminho livre, e as ferramentas para o SQL Server são ótimas.

Com esses e alguns bancos de dados / tabelas e trabalhos e tempo adicionais, é possível criar um sistema básico de monitoramento (mas não é bonito), essas são ferramentas para DBAs; a menos que você seja bom em coisas de BI, terá dificuldade em encontrar tempo para produzir coisas úteis para os negócios, embora o aplicativo Ozar sp_blitz seja bem legal.

Depois de passar cerca de um ano fazendo a coisa de graça e resolvendo muitos problemas (mas sem conseguir muito investimento), pude deixar claro, após um grande problema, que o software de monitoramento de perf era uma prioridade e nós o compraríamos. venha inferno ou água alta.

Após a demonstração dos clientes mencionados anteriormente, escolhi o DPA porque o gerenciamento poderia consumir facilmente os resultados, embora eu definitivamente tenha licenças de cliente para o SQL Sentry Plan Explorer Pro (1000% vale o dinheiro) e realmente gostei de usar a versão do servidor, apenas não os pegou o mesmo caminho.

Também tentei fazer o SQLNexus funcionar em um ponto, mas acabei trabalhando muito do que me interessava, pois pode atender às suas necessidades.


1

Para criar rapidamente uma linha de base de desempenho para obter alguns números sobre as diferentes instâncias produtivas de sql, eu usaria uma avaliação gratuita de uma ferramenta de terceiros como o Solarwinds Database Performance Analyzer.



Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.