Pesquisar este blog

segunda-feira, 14 de julho de 2014

Reindexar Banco de Dados SQL SERVER

O que é indexar, reindexar e por que é importante?

Imagine uma biblioteca, onde existam vários livros e muitos estudantes utilizam essa biblioteca diariamente, pegando livros das estantes para ler.
Para facilitar o estudante encontrar o livro, os livros estão organizados em estantes que são separadas por áreas, como humanas, exatas e assim por diante.

Isso se compara a um índice no Banco de Dados, onde a biblioteca é o banco(tabela) e os livros são os registros, e o fato de estarem organizados(indexados) facilita na hora de encontrar um registro.

Porém, os estudantes quando pegam um livro não podem devolver novamente no mesmo lugar, pois poderiam cometer algum erro e estragar a ordem dos livros, então deixam-no sobre uma mesa para que a pessoa responsável organize quando puder, para que esses livros não fiquem indisponíveis quando outro estudante precisar deles, a pessoa responsável mantém uma lista com todos os livros que estão sobre a mesa, para que caso o estudando não localize o livro, ela veja se o mesmo não está sobre a mesa.
Da mesma forma, ela mantém uma lista para livros novos que chegaram e ainda não foram organizados nas estantes e para livros que foram retirados do acervo. E assim que possível, ela reorganiza os livros para que fiquem na ordem novamente deixando mais rápida a busca.

Contudo, este trabalho não pode ser feito o tempo todo, pois os estudantes teriam que ficar esperando que ele se completasse para que então pudessem pegar os livros que estão procurando.
O fato de reindexar uma tabela se compara ao ato de recolocar os livros nas estantes novamente e eliminar as listas paralelas, ou seja, quando inserimos, atualizamos ou deletamos um registro, o índice fica desfalcado desses registros, é como se eles estivessem em uma lista separada, porém a reindexação não pode ser feita o tempo todo e automaticamente, pois necessitária que quem estivesse tentando acessar a tabela em questão precisasse esperar o termino da reindexação.

por isso é importante de tempos em tempos que façamos a reindexação das tabelas do nosso banco de dados, assim deixaremos o acesso aos dados mais rápido.
bom, para reindexar uma tabela no SQL SERVER, precisamos executar o seguinte comando:

DBCC DBREINDEX ('NOME_DA_TABELA', '', 80)
Onde o primeiro parâmetro se refere ao nome da tabela, o segundo ao nome do índice(opcional) e o terceiro é o percentual de cada index em relação ao armazenamento dos dados.

Para reindexar um banco inteiro, basta utilizar a sotored procedure SP_MSFOREACHTABLE que é responsável por percorrer todas as tabelas do banco e executar um comando designado.

EXEC SP_MSFOREACHTABLE @command1= "DBCC DBREINDEX ('?', '', 80)"
Pronto, todas as tabelas do seu banco estarão reindexadas e provavelmente haverá melhora na performance do mesmo.
Obs: Se possível realize está operação quando não houver usuários utilizando o banco. pois bloqueia o acesso a tabela até que o índice seja refeito.

Nenhum comentário:

Postar um comentário