Qual é a função da reconstrução de índices?

8

Sou jovem no mundo da TI e estou aprendendo diariamente. Comecei a trabalhar com bancos de dados SQL e tenho muitas perguntas básicas.

Um em particular: qual é a função da reconstrução de índices? Ainda não encontrei uma boa resposta pelo Google.

Qualquer feedback é apreciado.

Albert Green
fonte

Respostas:

11

Os índices são reconstruídos para remover a fragmentação. Existem mil e um artigos e postagens de blog sobre a natureza da fragmentação do índice, mas o @BrentOzar postou recentemente uma explicação concisa em Stop Worrying About SQL Server Fragmentation .

Vamos dar um passo atrás por um segundo e fingir que seu banco de dados é uma lista telefônica organizada por sobrenome, primeiro nome.

À medida que as pessoas se mudam para sua cidade, precisamos adicioná-las à lista telefônica. Idealmente, cada página tem algum espaço vazio, e nós o governamos com o fator de preenchimento. Quando o SQL Server recria índices, ele usa o fator de preenchimento para decidir quanto espaço livre resta em cada página. Se não houver espaço livre suficiente, o SQL Server precisará fazer uma reorganização - mas não pode colocar uma nova página no meio da lista telefônica. O livro já está encadernado. Teremos que colocar mais páginas em branco no final.

Problema # 1 - Fragmentação Interna: Temos uma página recém-adicionada com quase nada de material. Problema nº 2 - Fragmentação externa: as páginas da lista telefônica estão com defeito.

O artigo recente de Brent oferece uma perspectiva atualizada de uma de suas séries anteriores, Index Fragmentation Findings . O artigo mais antigo destaca estatísticas de estudos muito mais antigos sobre os efeitos prejudiciais da fragmentação. Quanto mais recente, é possível mitigar uma grande porcentagem das desvantagens de desempenho, garantindo que seu banco de dados seja totalmente armazenado em cache.

Agora, o Ram é tão comicamente barato que é provavelmente a solução mais barata, fácil e de menor risco para um banco de dados altamente fragmentado. Especialmente se a natureza do design do banco de dados for tal que ele se torne naturalmente fragmentado, apesar dos esforços de manutenção.

Mark Storey-Smith
fonte
3

A resposta simplificada - a reconstrução do índice é uma maneira de remover a fragmentação do índice. Ele descarta o índice especificado e cria novamente removendo a fragmentação no processo. Você pode achar este artigo útil

RK Kuppala
fonte