Por que não consigo reconstruir alguns índices do SQL Server?

1

Eu tenho uma tabela no meu banco de dados do SQL Server 2005 com dois índices que são muito fragmentados (33,3% e 85,7%). A tabela parece com o seguinte:

CREATE TABLE [dbo].[Seasons](
   [SeasonID] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
   [TeamID] [bigint] NOT NULL,
   [Year] [smallint] NOT NULL,
   [Name] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Seasons] PRIMARY KEY CLUSTERED 
( [SeasonID] ASC )

O outro índice está na coluna TeamID. Quando eu tento reconstruir os índices no estúdio de gerenciamento, isso me diz 'sucesso' em cada um. Mas, quando vejo a fragmentação novamente, nada mudou. A tabela tem apenas 2300 linhas. Não tenho certeza se isso é relevante, mas também percebi que leva um longo tempo (na ordem de 30 segundos) para exibir as informações de fragmentação quando clico com o botão direito do mouse em um índice, seleciono propriedades e seleciono a página Fragmentação. / p>

Outros índices na reconstrução do BD sem problemas.

Alguma ideia de por que não posso realmente reconstruir esses índices? Alguma idéia de por que demora tanto para puxar a informação de fragmentação? Obrigado!

    
por AgileJon 23.12.2009 / 16:17

2 respostas

2

Jon,

2300 linhas e com base no seu esquema, cada linha ocupa cerca de 118 bytes e no total, cerca de 65 páginas. No SQL Server, uma página tem cerca de 8 KB e você já deve saber disso. Nestas tabelas pequenas, a fragmentação NÃO é um grande problema e você não precisa se preocupar com isso.

Inicialmente, o espaço é alocado para as tabelas como uma única alocação de página e, uma vez que tenha até 3 extensões, terá uma extensão uniforme. As primeiras poucas alocações de página única aumentam as informações de fragmentação. Espero que isso ajude.

    
por 23.12.2009 / 23:38
1

Eu notei a mesma coisa na opção de fragmentação, eu acho mais fácil usar DBCC SHOWCONTIG WITH ALL_INDEXES, TABLERESULTS para obter as estatísticas de todas as tabelas de uma vez, ou apenas fazer uma tabela.

E eu não me preocuparia com níveis de fragmentação em tabelas menores, parece que eles não desfragmentam às vezes, não tenho certeza se é uma falha no processo de desfragmentação, ou o cálculo do nível de fragmentação, mas com alguns milhares linhas não afetará o desempenho.

    
por 23.12.2009 / 20:09