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:
- A lentidão é em todas as partes do sistema?
- A Lentidão afeta todos os sitemas que possuem Bases de Dados nesse servidor?
- Esta lento o tempo todo ou apenas em alguns periodos do dia ou dias da semana?
- O Servidor é dedicado para o SQL Server?
- As bases de dados estão numa storage ou em disco no proprio servidor?
- Quantos discos fisicos o servidor possui?Quanto de memória dedicada para o SQL Server ?
- Qual a fragmentação dos Indices?
- Quando ocorreu a última atualização de estatisticas?
- Existe alguma ação que quando tomada resolve temporariamente o problema?Por quanto tempo?
- 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:
- 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 ).
- Utilizar o PerfMon para coletar informações de disco, processador, memoria e estatiscas do SQL Server
- Verficar os logs do windows e sql.
- Analisar se foram aplicadas boas praticas ao TempDB
- Coletar informações Consultas mais pesadas (IO e CPU)
- Verificar Contenção “gargalos” que podem afetar a performance Geral
- Verificar Blocks e DeadLocks
- Montar ambiente de teste para utilizar DTA
Nos próximos posts vou detalhar cada etapa.