2009-05-16 13 views

risposta

3

Ci sono un certo numero di differenze. Fondamentalmente, la ricostruzione è una ricostruzione totale di un indice: costruirà un nuovo indice, quindi eliminerà quello esistente, mentre la riorganizzazione sarà semplicemente, beh ... lo sarà riorganizzare lo.

This post di blog Mi sono imbattuto poco prima che lo spiegassi molto meglio di me. :)

+0

Stavo per pubblicare anche questo link. :-) In internet, quasi tutte le informazioni sono lì, devi solo trovarlo. – MicSim

25

Pensa a come viene implementato l'indice. In genere è una specie di albero, come un albero B + o un albero B. L'indice stesso viene creato osservando le chiavi nei dati e costruendo l'albero in modo che la tabella possa essere ricercata in modo efficiente.

Quando si riorganizzare l'indice, si passa attraverso l'indice esistente, la pulizia di blocchi per i record cancellati ecc Questo potrebbe essere fatto (ed è in alcuni database) quando si effettua una cancellazione, ma che impone una certa penalità di prestazione. invece, lo fai separatamente per farlo più o meno in modalità batch.

Quando si ripristina l'indice, si elimina l'albero esistente e si leggono tutti i record, creando un nuovo albero direttamente dai dati. Questo ti offre un nuovo albero, ottimamente ottimizzato, che potrebbe essere migliore dei risultati della riorganizzazione della tabella; ti consente anche di rigenerare l'albero se in qualche modo è stato danneggiato.

+1

Grazie mille – Anoop

+0

felice di aiutare, prego. –

0

"Riorganizza indice" è un processo di pulizia, organizzazione e deframmentazione del "livello foglia" dell'albero B (in realtà, pagine di dati).

La ricostruzione dell'indice sta modificando l'intero albero B, ricreando l'indice.

Si consiglia di riorganizzare l'indice quando la frammentazione dell'indice è compresa tra il 10% e il 40%; se la frammentazione dell'indice è superiore al 40%, è meglio ricostruirla.

La ricostruzione di un indice richiede più risorse, produce blocchi e rallenta le prestazioni (se si sceglie di mantenere la tabella online). Quindi, devi trovare il momento giusto per quel processo.

6

REBUILD blocca la tabella per l'intero periodo di operazione (che può essere di ore e giorni se la tabella è grande).

REORGANIZE non blocca la tabella.

Bene. in realtà, mette alcune serrature temporanee sulle pagine con cui lavora in questo momento, ma vengono rimosse non appena l'operazione è completata (che è frazione di secondo per ogni dato blocco).

Come indicato in @Andomar, è disponibile un'opzione per REBUILD un indice in linea, che crea il nuovo indice e, al termine dell'operazione, sostituisce semplicemente l'indice precedente con quello nuovo.

Ciò significa che è necessario disporre di spazio sufficiente per conservare sia la vecchia che la nuova copia dell'indice.

REBUILD è anche un'operazione DML che modifica le tabelle di sistema, influisce sulle statistiche, attiva gli indici disabilitati ecc.

REORGANIZE è una pura operazione di pulizia che lascia tutto lo stato del sistema così com'è.

+0

Le versioni aziendali di Sql Server possono ricostruire gli indici senza bloccare la tabella, vedere REBUILD WITH (ONLINE = ON) http://blogs.techrepublic.com.com/datacenter/?p=249 – Andomar

-1

indice di ricostruzione ricostruire uno o più indici per una tabella nel database distanziato. riorganizzato - defragment indici clustrati e secondari di tabella hte distanziata

+1

Si prega di risolvere questo problema in modo che sia comprensibile! –

1

Ricostruisci rilasciando gli indici correnti e ricreando quelli nuovi.

Riorganizzare è come mettere in ordine la casa con quello che hai già.

È buona norma utilizzare il 30% di frammentazione per determinare la ricostruzione rispetto alla riorganizzazione.

< 30% Riorganizza vs> 30% a ricostruire

0

Oltre alle differenze di cui sopra (in pratica la ricostruzione creerà il nuovo indice, e poi "scambiarlo in" per quello esistente, piuttosto che cercare di risolvere il problema quello esistente), una considerazione importante è che una ricostruzione, anche una ricostruzione di Enterprise ONLINE, interferirà con le transazioni di isolamento dello snapshot.

TX1 inizia transazione snapshot
TX1 legge da T

TX2 ricostruisce indice su T
TX2 ricostruire completa

TX1 leggere da T di nuovo:

Errore 3961, Snapshot transazione di isolamento non riuscito nel database poiché l'oggetto a cui ha avuto accesso l'istruzione è stato modificato da un'istruzione DDL in un'altra transazione concorrente dall'inizio di questa transazione. Non è consentito perché i metadati non sono versionati. Un aggiornamento simultaneo ai metadati può causare incoerenza se combinato con l'isolamento dello snapshot.

Problemi correlati