none
Defragmentar Indice no SqlServer 2012 RRS feed

  • Pergunta

  • Boa tarde Pessoal,

    Mesmo após fazer  um rebuild o índice continua 50% fragmentado.

    Também fiz o reorganize e não obtive sucesso.

    Obrigado,

    Jurandyr F. Alves


    • Editado jfonseca sexta-feira, 27 de maio de 2016 20:01 Inserção de Imagem
    sexta-feira, 27 de maio de 2016 19:58

Respostas

  • Oi,

    Explicando melhor o que falei sobre tabelas pequenas poderem ter algum nivel de fragmentação sem que isso seja problema.

    Ocorre que enquanto um objeto, como um índice, ainda é menor do que um total de 8 páginas, as páginas podem ser alocadas em mixed extents, com isso as 8 páginas iniciais podem ser alocadas em mixed extents distintas sem que isso seja significativo para a fragmentação. Rebuilds de indice não resolvem nessa situação.

    Você pode utilizar a seguinte query para identificar as páginas da sua tabela:

    select allocation_unit_type_desc,page_type_desc,
                count(*) as TotalPages
     from
    sys.dm_db_database_page_allocations
         (DB_ID('northwnd'),OBJECT_ID('customers'),1,1,'DETAILED')
    group by
    allocation_unit_type_desc,page_type_desc
    order by allocation_unit_type_desc

    Observe que as páginas de tipo (null) são reservadas, não alocadas, não contam para isso.

    Fiz esse teste com a customers do northwind, que tem na casa de 90 registros e ela possui apenas 3 páginas de dados.

    Abs,


    Dennes [http://bufaloinfo.cloudapp.net] Inscreva-se em meu treinamento on-line de T-SQL - [http://bufaloinfo.cloudapp.net/Cursos/linguagemsql.aspx]

    domingo, 29 de maio de 2016 02:37

Todas as Respostas

  • Oi,

    Sua tabela tem apenas 410 registros. Tabelas pequenas podem nunca ficar 100% desfragmentadas e isso não chega a ser um problema.

    Abs,

    Dennes

    http://bufaloinfo.cloudapp.net


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp

    sábado, 28 de maio de 2016 00:44
  • JFonseca,

    A fragmentação é algo natural e comum de acontecer em qualquer tabela ou ambiente de banco de dados, mesmo sendo uma tabela pequena e com poucos registros os processos de Insert, Update e Delete podem proporcionar fragmentação, bem como, os tipos de dados que você esta utilizando.

    Pelo indicador de fragmentação por linha de dados, acredito que você esteja utilizando mais colunas com tamanho variável do que colunas com tamanho fixo. Poderia descrever um pouco da sua estrutura.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    domingo, 29 de maio de 2016 01:13
    Moderador
  • Oi,

    Explicando melhor o que falei sobre tabelas pequenas poderem ter algum nivel de fragmentação sem que isso seja problema.

    Ocorre que enquanto um objeto, como um índice, ainda é menor do que um total de 8 páginas, as páginas podem ser alocadas em mixed extents, com isso as 8 páginas iniciais podem ser alocadas em mixed extents distintas sem que isso seja significativo para a fragmentação. Rebuilds de indice não resolvem nessa situação.

    Você pode utilizar a seguinte query para identificar as páginas da sua tabela:

    select allocation_unit_type_desc,page_type_desc,
                count(*) as TotalPages
     from
    sys.dm_db_database_page_allocations
         (DB_ID('northwnd'),OBJECT_ID('customers'),1,1,'DETAILED')
    group by
    allocation_unit_type_desc,page_type_desc
    order by allocation_unit_type_desc

    Observe que as páginas de tipo (null) são reservadas, não alocadas, não contam para isso.

    Fiz esse teste com a customers do northwind, que tem na casa de 90 registros e ela possui apenas 3 páginas de dados.

    Abs,


    Dennes [http://bufaloinfo.cloudapp.net] Inscreva-se em meu treinamento on-line de T-SQL - [http://bufaloinfo.cloudapp.net/Cursos/linguagemsql.aspx]

    domingo, 29 de maio de 2016 02:37