SQL Server – Tuning para Desenvolvedores – Geral

Quando se fala de tuning primeiro passo é coletar informações do estado atual do ambiente, um problema de perfomance pode ser simples como a criação de um indice ou complexo como mover tabelas e indices para novos discos ou trocar um raid 5 por um raid 10. Pode também ser necessárias  várias ações em conjunto.

Um ponto de partida seria responder algumas perguntas como esta abaixo:

  1. A lentidão é em todas as partes do sistema?
  2. A Lentidão afeta todos os sitemas que possuem Bases de Dados nesse servidor?
  3. Esta lento o tempo todo ou apenas em alguns periodos do dia ou dias da semana?
  4. O Servidor é dedicado para o SQL Server?
  5. As bases de dados estão numa storage ou em disco no proprio servidor?
  6. Quantos discos fisicos o servidor possui?Quanto de memória dedicada para o SQL Server ?
  7. Qual a fragmentação dos Indices?
  8. Quando ocorreu a última atualização de estatisticas?
  9. Existe alguma ação que quando tomada resolve temporariamente o problema?Por quanto tempo?
  10. Número de deadlocks e de Blocks?

Respondendo todas essas perguntas é um bom inicio para investigar o problema. No caso de ser um problema apenas em alguma parte especifica do sistema podemos já utilizar o profiler e focar nas tabelas especificas.

Após o questionário ser respondido começa a coleta de informações:

  1. Utilizar Profiler utilizando template Tuning “adicione as colunas StartTime , CPU, reads e writes” pegando consultas acima de 1 segundo (ajuste esse número para mais ou menos dependendo do volume retornado ).
  2. Utilizar o PerfMon para coletar informações de disco, processador, memoria e estatiscas do SQL Server
  3. Verficar os logs do windows e sql.
  4. Analisar se foram aplicadas boas praticas ao TempDB
  5. Coletar informações Consultas mais pesadas (IO e  CPU)
  6. Verificar Contenção  “gargalos” que podem afetar a performance Geral
  7. Verificar Blocks e DeadLocks
  8. Montar ambiente de teste para utilizar DTA

Nos próximos posts vou detalhar cada etapa.