Назад | Перейти на главную страницу

Почему я не могу перестроить некоторые индексы SQL Server?

У меня есть таблица в базе данных SQL Server 2005 с двумя сильно фрагментированными индексами (33,3% и 85,7%). Таблица выглядит следующим образом:

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 )

Другой индекс находится в столбце TeamID. Когда я пытаюсь перестроить индексы в Management Studio, он говорит мне об «успехе» по каждому из них. Но когда я снова смотрю на фрагментацию, ничего не изменилось. В таблице всего 2300 строк. Не уверен, что это актуально, но я также заметил, что для получения информации о фрагментации требуется ДОЛГОЕ время (порядка 30 секунд), когда я щелкаю правой кнопкой мыши индекс, выбираю свойства, а затем выбираю страницу фрагментации.

Остальные индексы в БД восстанавливаются без проблем.

Любая идея, почему я не могу фактически восстановить эти индексы? Есть идеи, почему для получения информации о фрагментации требуется так много времени? Спасибо!

Джон,

2300 строк, и в зависимости от вашей схемы каждая строка занимает около 118 байт, а в общей сложности около 65 страниц. В SQL Server размер страницы составляет около 8 КБ, и вы, возможно, уже это знаете. В этих небольших таблицах фрагментация НЕ имеет большого значения, и вам не нужно о ней беспокоиться.

Первоначально пространство выделяется для таблиц как одностраничное, и как только оно будет иметь до 3-х экстентов, оно будет одинаковым. Первые несколько выделений одной страницы вызывают всплеск информации о фрагментации. Надеюсь это поможет.

Я заметил то же самое в параметре фрагментации: мне проще использовать DBCC SHOWCONTIG WITH ALL_INDEXES, TABLERESULTS, чтобы получить статистику для всех таблиц сразу, или просто сделать одну таблицу.

И я бы не стал беспокоиться об уровнях фрагментации на меньших таблицах, кажется, они иногда не дефрагментируют, не уверен, ошибка ли это в процессе дефрагментации или в вычислении уровня фрагментации, но с парой тысяч строк это не так. повлияет на производительность.