2010-03-22 20 views
6

Na początek, nie jestem DBA i pracuję nad odbudową indeksów.Przebudowywanie indeksów nie zmienia fragmentacji% dla nieklastrowanych indeksów.

Użyłem niesamowitego skryptu TSQL z msdn do zmiany indeksu na podstawie procentu fragmentów zwrócony przez dm_db_index_physical_stats i jeśli procent fragmentu jest większy niż 30, wykonaj REBUILD lub wykonaj REORGANIZE.

W pierwszej iteracji było 87 rekordów, które wymagały defrag. Uruchomiłem skrypt, a wszystkie 87 indeksów (klastrowane: &) zostały przebudowane lub ponownie zindeksowane. Kiedy dostałem statystyki z dm_db_index_physical_stats, było jeszcze 27 rekordów, które wymagały defragmentacji i wszystkie tezy były indeksami nieskompresowanymi. Wszystkie indeksy klastrowane zostały naprawione.

Niezależnie od tego, ile razy uruchomiłem skrypt, aby defragmentować te rekordy, nadal mam te same indeksy, które mają być defragmentowane, a większość z nich z takim samym fragmentacją%. Po tym wszystkim nic się nie zmienia.

Uwaga: Podczas tych iteracji nie wykonałem żadnych wstawień/aktualizacji/usunięć w tabelach. Nadal przebudowa/reorganizacja nie spowodowała żadnych zmian.

Więcej informacji: Korzystanie z SQL 2008 Script jako dostępne w witrynie MSDN http://msdn.microsoft.com/en-us/library/ms188917.aspx

Czy mógłbyś wyjaśnić, dlaczego te 27 zapisy non skupionych indeksów nie są zmieniane/zmodyfikowane?

Każda pomoc w tym zakresie byłaby bardzo ceniona.

Nod

+0

Czy uda ci się podać dane wyjściowe z pewnymi statystykami z jednego z 27 przykładów? – TomTom

+0

Wkleiłem poniżej jednego z wyników indeksu dla 3 iteracji. pierwsza iteracja zmieniła fragmentację% nieco, gdzie jako 2 i 3 nie miały wpływu. X = [IX_BatchNumber] fragment% zwrócony przez dm_db_index_physical_stats iteracji 1 = +52,6315789473684 iteracji 2 = 41,1764705882353 iteracji 3 = 41,1764705882353 \t Istnieją inne przykłady indteresting gdzie przed pierwszym defragmentacji rozdrobnienie% wartość wynosiła 30 aw następnej przeskoczył do 40 i pozostał tam na zawsze. Ale zdarzyło się to tylko dla kilku nagrań. Dzięki. – Noddy

Odpowiedz

12

SQL Server nie odbuduje indeksy, które nie są wystarczająco duże. Zajrzyj do fragmentu fragmentu (który jest jednym z pól w widoku sys.dm_db_index_physical_stats), jest prawdopodobnie dość niski dla tych 27 indeksów.

+0

Mam ten sam problem z indeksem, który ma ponad milion stron i jest 31% podzielony. Naprawdę chciałbym odpowiedzi. –

+0

FYI zobacz odpowiedzi na stronie dba.stackexchange.com tutaj: http://dba.stackexchange.com/questions/18372/why-index-rebuild-does-not-reduce-index-fragmentatation –

Powiązane problemy