2010-03-22 2 views
6

Для начала я не администратор базы данных, и я работаю над восстановлением индексов.Восстановление индексов не изменяет фрагментацию% для некластеризованных индексов

Я использовал потрясающий TSQL-скрипт из msdn, чтобы изменить индекс, основанный на проценте фрагментации, возвращаемом dm_db_index_physical_stats, и если процент фрагмента больше 30, то выполните REBUILD или выполните REORGANIZE.

То, что я узнал, было на первой итерации, было 87 записей, которые нуждались в дефрагментации. Я запустил скрипт, и все 87 индексов (кластерные & некластеризованные) были перестроены или переиндексированы. Когда я получил статистику из dm_db_index_physical_stats, было еще 27 записей, которые нуждались в дефрагментации, и все тезисы были НЕКОТОРЫЕ ИНДЕКСЫ. Все кластерные индексы были исправлены.

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

Примечание: я не выполнял никаких вставок/обновлений/удалений в таблицы во время этих итераций. Тем не менее реорганизация/реорганизация не привели к каким-либо изменениям.

Дополнительная информация: Использование SQL 2008 скрипт как доступный в MSDN http://msdn.microsoft.com/en-us/library/ms188917.aspx

Не могли бы вы объяснить, почему эти 27 записей, не являющихся кластерных индексов не меняются/изменены?

Любая помощь по этому вопросу была бы высоко оценена.

Nod

+0

Можете ли вы, пелаза, предоставить результаты с некоторой статистикой одного из 27 в качестве примера? – TomTom

+0

Я наклеил ниже один из результатов индекса для 3 итераций. первая итерация немного изменила фрагментацию, где 2-й и 3-й не повлияли. индекса = [IX_BatchNumber] Фрагмент% возвращаемый dm_db_index_physical_stats Итерация 1 = +52,6315789473684 Итерация 2 = 41,1764705882353 Итерация 3 = +41,1764705882353 \t Есть другие indteresting случаев, когда в перед самым первой дефрагментацией фрагментация значения% было 30 и в соседнем с ним прыгали до 40 и оставались там навсегда. Но это произошло только за пару записей. Благодарю. – Noddy

ответ

12

SQL Server не будет перестраивать индексы, которые не являются достаточно большими. Посмотрите на фрагмент_компьютера (это одно из полей в представлении sys.dm_db_index_physical_stats), вероятно, это довольно мало для этих 27 индексов.

+0

У меня такая же проблема с индексом, который имеет более миллиона страниц и 31% фрагментирован. На самом деле хотел бы ответить. –

+0

FYI см. Ответы на dba.stackexchange.com здесь: http://dba.stackexchange.com/questions/18372/why-index-rebuild-does-not-reduce-index-fragmentatation –

Смежные вопросы