Dlaczego indeks REBUILD nie zmniejsza fragmentacji indeksu?


Odpowiedzi:


39

Jeśli indeks jest bardzo mały (uważam, że mniej niż 8 stron) użyje różnych zakresów. Dlatego będzie wyglądać, jakby nadal istniała fragmentacja, ponieważ zasięg obudowy zawiera strony z wielu indeksów.

Z tego powodu, a także z faktu, że przy tak małym indeksie, że fragmentacja jest zwykle nieistotna, naprawdę powinieneś odbudowywać indeksy tylko z pewnym progiem strony. Najlepszą praktyką jest odbudowywanie pofragmentowanych indeksów, które mają minimum 1000 stron .


34

Może się to zdarzyć również przy bardzo DUŻYCH indeksach.

Miałem kilka indeksów na stole z około 700 milionami wierszy, których nie mogłem defragmentować poniżej około 30%. Problem polegał na tym, że nie było wystarczającej ilości ciągłego wolnego miejsca w bazie danych, aby porządkować indeks kolejno.

Aby obejść bardzo duży indeks, który nie będzie defragmentowany, NAJLEPSZY rozwiązaniem jest wstępne zmierzenie rozmiaru nowej bazy danych i przeniesienie wszystkich obiektów do tej bazy danych, a następnie odtworzenie tam swoich indeksów.


1

Walczyłem z tym przez jakiś czas i podobnie jak JNK, myślałem, że problemem jest nadal wolne miejsce i fragmentacja fizyczna na dysku. Co jednak robisz w przypadku SSD SAN?

Teraz dowiedziałem się, że dobrym pomysłem może być uwzględnienie tylko index_level = 0. Tak to się dzieje w skrypcie Oli Hallengren.

Kolejna poprawa jest do zrobienia

 REBUILD With (maxdop = 1)

W ten sposób zapewniasz maksymalną poprawę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.