De acordo com o Microsoft SQL Master, Brent Ozar, ele tomou algumas decisões terríveis de ajuste de desempenho de banco de dados ao longo de sua carreira. Felizmente para nós, podemos nos beneficiar de seus erros e não temos que descobrir tudo sozinhos. Ele compartilhou sua sabedoria suada gratuitamente durante a série de webcasts Database Training Days da Quest.
Em uma de suas sessões, aprendemos "Por que desfragmentar seus índices não está ajudando". Na verdade, isso pode estar piorando o desempenho do seu banco de dados, e Brent nos explicou o motivo. Ao longo do caminho, ele enfatizou a importância de saber o que você está medindo quando se trata de otimizar o desempenho do SQL Server.
Fragmentação interna vs. externa
Brent nos deu um rápido tutorial sobre como o SQL Server armazena dados em “páginas” de 8 KB. Em um índice novo ou reconstruído, as páginas estão todas cheias e armazenadas em ordem. Mas, à medida que mais dados são adicionados, as páginas se dividem:nem todas as páginas estão cheias e ocorrem fora de ordem. Esta é a diferença vital entre fragmentação interna e externa:
- Fragmentação externa – refere-se a páginas fora de ordem
- Fragmentação interna – refere-se ao espaço vazio em uma página
Focar menos divisões na página
Muitos profissionais de banco de dados se concentram nas divisões de página como uma medida de fragmentação do banco de dados, no entanto, Brent explicou que esse número não tem sentido porque as divisões de página ocorrem tanto ao adicionar uma nova linha a uma tabela vazia quanto ao adicionar uma nova página. Então, não é útil, afinal.
Como a fragmentação externa pode piorar as coisas
Nesta sessão, Brent afirmou que a fragmentação externa não é uma medida útil do desempenho do banco de dados, pois a ordem das páginas não tem muito impacto na velocidade das tarefas de manutenção, execução de consultas na RAM ou leitura de dados do disco. Assim, os profissionais de banco de dados que tentam corrigir a fragmentação externa reorganizando e reconstruindo índices estão, na verdade, piorando o desempenho inflando os backups e consumindo mais tempo de janela de manutenção.
Profissionais de banco de dados que tentam reduzir a fragmentação externa deixando espaço nas páginas por meio da definição de um fator de preenchimento também estão causando um problema pior do que o que estão tentando corrigir. Isso ocorre principalmente porque você quase nunca precisa inserir dados em um ponto intermediário no índice. Portanto, tentar manter as páginas em ordem colocando menos dados em cada página individual está causando fragmentação interna.
Monitorando o tempo de espera
O que você deve fazer em vez disso? Brent aconselha definir o fator de preenchimento para o padrão de 100% (ou pelo menos 80% ou superior) e, em seguida, reconstruir os índices para embalá-los novamente. Em seguida, concentre-se em monitorar o número de ajuste de desempenho correto – tempo de espera. Uma das melhores maneiras de visualizar vários aspectos do tempo de espera nas instâncias do banco de dados é usar uma ferramenta de monitoramento de desempenho para identificar exatamente onde os processos estão travando.
Para obter ainda mais informações de Brent sobre fragmentação de índice, estatísticas de tempo de espera e o que você deve fazer em relação à manutenção de índice, ouça o webcast sob demanda.
Você também pode acessar mais conselhos de especialistas sobre o desempenho do banco de dados nos Dias de treinamento do banco de dados da Quest.