Perché l'indice REBUILD non riduce la frammentazione degli indici?


Risposte:


39

Se un indice è molto piccolo (credo che meno di 8 pagine) utilizzerà estensioni miste. Pertanto, sembrerà che ci sia ancora frammentazione rimanente, poiché l'estensione dell'alloggiamento conterrà pagine da più indici.

Per questo motivo, e anche per il fatto che in un indice così piccolo che la frammentazione è in genere trascurabile, dovresti davvero ricostruire gli indici solo con una determinata soglia di pagina. È consigliabile ricostruire indici frammentati di almeno 1000 pagine .


34

Questo può accadere anche con indici molto GRANDI.

Avevo degli indici su un tavolo con circa 700 m di file che non potevo deframmentare al di sotto del 30% circa. Il problema non era abbastanza spazio libero contiguo all'interno del database per disporre l'indice consecutivamente.

Per aggirare un indice molto grande che non deframmenterà, la soluzione MIGLIORE è pre-dimensionare un nuovo database e spostare tutti gli oggetti su quel DB, quindi ricreare gli indici lì.


1

Ho lottato con questo per qualche tempo e come JNK ho pensato che il problema fosse lo spazio libero e la frammentazione fisica su disco. Tuttavia, cosa fai al riguardo su una SAN SSD?

Ho scoperto che potrebbe essere una buona idea includere solo index_level = 0. È così che si fa nella sceneggiatura di Ola Hallengren.

Un altro miglioramento è da fare

 REBUILD With (maxdop = 1)

In questo modo garantisci il massimo miglioramento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.