none
Clustered Index ganha espaço em disco? RRS feed

  • 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
    quarta-feira, 30 de março de 2011 19:15

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
    quarta-feira, 30 de março de 2011 23:32

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.aspx

    att.
    Rafael Melo

    quarta-feira, 30 de março de 2011 19:46
  • 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
    quarta-feira, 30 de março de 2011 23:32