Usuário com melhor resposta
Clustered Index ganha espaço em disco?

Pergunta
-
Olá,
Tenho algumas tabelas que tem apenas 1 índice não clusterizado e que estão ocupando quase 5Gb.
Se eu alterar esses índeces para clusterizados, vou ganhar espaço em disco?
grato,
Miguel Salles Analista Programador BI- Tipo Alterado Miguel Salles quarta-feira, 30 de março de 2011 19:16
- Editado Miguel Salles quarta-feira, 30 de março de 2011 19:16 Correção
Respostas
-
Boa Noite,
Se você clusterizar uma tabela, o tamanho usado da tabela irá aumentar, pois, além dos dados será necessário montar as páginas de índices na árvore B-TREE. Entretanto, se a tabela ficar muito fragmentada, é possível que a criação de um índice clustered faça a redução de espaço, pois, uma tabela fragmentada pode ocupar muito mais espaço do que os dados em si.
Nas versões SQL Server 2000 e 2005 é recomendável inclusive que as tabelas possuam índices clustered, pois, desfragmentar tabelas sem índices clustered é mais complicado nessas versões. Ainda assim, não crie um índice clustered apenas para tentar economizar espaço (nem sempre é garantido). A criação de um índice clustered tem várias outras implicações e sua criação sem critério (ainda que haja redução de espaço em um primeiro momento), pode levar a vários problemas de desempenho e inclusive a aumentar muito o espaço.
Um índice não deve ser clusterizado tendo-se o espaço em mente, mas principalmente o impacto no tamanho dos outros índices por conta do ponteiramento e as instruções INSERT, UPDATE e DELETE.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar quarta-feira, 30 de março de 2011 23:32
- Marcado como Resposta Richard Juhasz segunda-feira, 4 de abril de 2011 20:09
Todas as Respostas
-
Miguel,
Pelo contrário.... Indices clusterizados ocupam mais espaço que os nao-clusterizados, pq eles armazenam os dados no nível de folha da arvore B. Mais detalhes sobre índices cluster e não cluster ver:
http://msdn.microsoft.com/pt-br/library/ms177443.aspxatt.
Rafael Melo -
Boa Noite,
Se você clusterizar uma tabela, o tamanho usado da tabela irá aumentar, pois, além dos dados será necessário montar as páginas de índices na árvore B-TREE. Entretanto, se a tabela ficar muito fragmentada, é possível que a criação de um índice clustered faça a redução de espaço, pois, uma tabela fragmentada pode ocupar muito mais espaço do que os dados em si.
Nas versões SQL Server 2000 e 2005 é recomendável inclusive que as tabelas possuam índices clustered, pois, desfragmentar tabelas sem índices clustered é mais complicado nessas versões. Ainda assim, não crie um índice clustered apenas para tentar economizar espaço (nem sempre é garantido). A criação de um índice clustered tem várias outras implicações e sua criação sem critério (ainda que haja redução de espaço em um primeiro momento), pode levar a vários problemas de desempenho e inclusive a aumentar muito o espaço.
Um índice não deve ser clusterizado tendo-se o espaço em mente, mas principalmente o impacto no tamanho dos outros índices por conta do ponteiramento e as instruções INSERT, UPDATE e DELETE.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar quarta-feira, 30 de março de 2011 23:32
- Marcado como Resposta Richard Juhasz segunda-feira, 4 de abril de 2011 20:09