Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Perfil de consulta 101 — Sim, ele realmente pode melhorar o desempenho do SQL Server


A criação de perfil de consulta é como você descobre o que está acontecendo dentro da caixa preta do desempenho do SQL Server.

Os usuários têm facilidade. DBAs não.


Pense nas opções fáceis que os usuários têm quando um aplicativo de banco de dados está funcionando mal:
  • Vá tomar um café e espere.
  • Insulte o computador.
  • Reclame com outros usuários.
  • Envie um tíquete de problema.

Não é essa a vida de Riley comparada às opções que você tem como DBA?
  • Procure sessões bloqueadas.
  • Verifique as taxas de acerto do cache do buffer.
  • Meça a espera máxima de E/S.
  • Examine a expectativa de vida da página.
  • Veja se os índices estão ausentes ou precisam ser recriados.
  • Procure bloqueios/deadlocks.
  • Verifique o uso da CPU.
  • Revise o registro do aplicativo para mensagens de falta de memória.
  • Certifique-se de que o banco de dados tempdb esteja configurado corretamente.

Pode ser qualquer um desses problemas de software, e eles geralmente levam você à solução de otimizar uma consulta ou alterar sua configuração. Ou pode ser um problema de hardware, e a solução é comprar mais memória ou poder de processamento.

Como os aplicativos de banco de dados tratam principalmente da execução de muitas consultas SQL, os problemas de desempenho têm muitos lugares para se esconder no SQL Server. Se você é um usuário, pode dizer:“Ah, bem, o problema deve estar dentro daquela caixa preta em algum lugar. Não é meu trabalho.”

Mas como DBA, você não tem esse luxo. Você tem que abrir a caixa preta, entrar, encontrar a bagunça e consertá-la.

Perfil de consulta 101 com monitoramento de desempenho do servidor SQL


Em geral, seu objetivo com o monitoramento de desempenho do servidor é ficar de olho no desempenho de suas consultas SQL ao longo do tempo e do crescimento do volume de transações em seu SQL Server. Você pode atingir esse objetivo de várias maneiras.

Dê uma olhada no plano de explicação


O plano de explicação mostra o que o SQL Server fará na execução da consulta, incluindo as tabelas que ele unirá, o tipo de junção que ele executará, o número de linhas que ele tocará e os índices que ele usará.

O que o plano de explicação pode lhe dizer? Por um lado, você pode ver como melhorar a própria consulta, por exemplo, removendo um NESTED LOOP JOIN que um dos desenvolvedores do banco de dados adicionou em uma tabela enorme. Ou você pode descobrir no plano de explicação que precisa criar ou reconstruir um índice para uma determinada tabela.

O plano de explicação é um bom ponto de partida para a criação de perfil de consulta, mesmo antes de você realmente executar as consultas suspeitas.

Execute a consulta


Para executar as consultas e ver quais recursos elas afetam em tempo de execução, primeiro crie rastreamentos para marcar os eventos à medida que ocorrem. Com os rastreamentos, você pode capturar dados e observar a ocorrência de erros. Uma ferramenta de criação de perfil armazena os dados que os rastreamentos capturaram e os exibe de uma maneira que facilita a localização e a solução de consultas problemáticas.

A combinação dos rastreamentos e da ferramenta de criação de perfil pode responder a muitas perguntas:
  • Quais consultas consomem mais memória?
  • Quanto tempo cada consulta leva para ser executada?
  • Quais bloqueios o SQL Server define para cada consulta?
  • Quais consultas o SQL Server pode executar a partir do cache de buffer? Com que frequência ele precisa ir para o disco?
  • Quantas linhas cada consulta examina?
  • Quantas solicitações por minuto o banco de dados está atendendo?

Você obterá a leitura mais precisa executando a consulta em seus bancos de dados de produção, mas isso também pode retardar o processamento por seus clientes e usuários do mundo real. Se puder, teste primeiro em instâncias de desenvolvimento ou teste em que você não esteja competindo por memória ou E/S com sua instância de produção.

Falando em clientes e usuários, seu objetivo na criação de perfil de consulta é deixá-los felizes. A criação de perfil pode facilmente descobrir dezenas de problemas em seu banco de dados, mas a razão pela qual você abriu a caixa preta é resolver os problemas mais dolorosos. Depois de capturar dados de um ou dois dias de uso normal, você pode encontrar os problemas de desempenho do servidor SQL que causam mais problemas aos seus usuários. Talvez um índice ausente esteja retardando a recuperação de registros ou muitos índices estejam retardando a inserção de registros e as atualizações do banco de dados. Talvez uma consulta usada com frequência esteja coletando informações com as quais ninguém mais se importa.

Use ferramentas de criação de perfil com sabedoria


As ferramentas de criação de perfil resgatam você do tedioso processo de configurar manualmente cada evento, filtro e chamada de procedimento para tudo o que você deseja rastrear. Com tanta coisa acontecendo dentro da caixa preta do desempenho do SQL Server, você pode facilmente capturar dados demais para ver a floresta em busca das árvores.

Boas ferramentas permitem que você selecione cuidadosamente o que você rastreia para que, por exemplo, você não capture centenas de eventos Lock:Acquired e preencha desnecessariamente sua tela com eles. No entanto, se você precisar examinar um evento que ocorre com frequência, use filtros como nome do aplicativo ou nome da tabela.

Em vez de gravar dados de rastreamento em uma tabela em um banco de dados, considere salvá-los em seu próprio arquivo separado. Isso evita que a sobrecarga do rastreamento se torne um fardo para o SQL Server e potencialmente distorça os resultados. Se sua ferramenta de criação de perfil favorece os dados extraídos de uma tabela, você pode importar os dados do arquivo para a tabela posteriormente.

Melhore o monitoramento de desempenho do SQL Server com a criação de perfil de consulta


Seus usuários ficam longe da caixa preta do desempenho do SQL Server, mas você não precisa. A criação de perfil de consulta é como você abre a caixa, descobre o que está acontecendo dentro e começa a solucionar problemas.

Mas não espere até que você esteja com problemas para usá-lo. O perfil de consulta é mais como verificar o óleo do que substituir o motor. Ele ajuda nas tarefas usuais do DBA de atualizar consultas obsoletas e modificar o design para que seus bancos de dados acompanhem as mudanças nos negócios.