SQL Reindicizza vs. Deframmentare

March 20

SQL Reindicizza vs. Deframmentare


Una banca dati informatica che vede frequente aggiunge, elimina e aggiornamenti saranno, nel corso del tempo, soffrire indice di frammentazione, rallentando il database verso il basso. software di database SQL Server di Microsoft ha due Structured Query Language (SQL) comanda che affrontare questo problema: DBCC INDEXDEFRAG e DBCC DBREINDEX. Anche se entrambi risolvono il problema, le differenze tra i due dettare come si utilizzano.

Azione

Il comando DBREINDEX ricostruisce gli indici della tabella da zero, mentre INDEXDEFRAG mantiene gli indici, ma riorganizza il loro contenuto. È possibile eseguire l'equivalente di DBREINDEX mediante l'emissione di un DROP INDEX e CREATE INDEX per ogni indice si desidera ricostruire; DBREINDEX è più veloce e meno soggetto a errori di battitura. INDEXDEFRAG compatta l'indice in base al suo fattore di riempimento; rimuove le pagine vuote create durante l'operazione di deframmentazione.

Velocità

La velocità relativa dei due comandi dipende dal grado di frammentazione degli indici di una tabella. INDEXDEFRAG lavora più velocemente se gli indici hanno una quantità relativamente bassa di frammentazione: ci vuole meno tempo per eseguire la scansione e riorganizzare alcune pagine in un indice di ricostruire con DBREINDEX. Tuttavia, se si è lasciato una notevole quantità di passaggio dal momento che il database indicizzato, INDEXDEFRAG richiede più di DBREINDEX.

Esclusivo contro Shared Access

DBCC DBREINDEX richiede l'accesso esclusivo al tavolo, in modo efficace il blocco a tutti gli utenti ed elabora fuori mentre funziona. Gli indici delle tabelle sono incomplete fino al termine del comando, quindi le richieste degli utenti per i dati fallirebbe se hanno provato l'accesso al tavolo. D'altra parte, INDEXDEFRAG rimescola semplicemente l'indice esistente, in modo da permette agli utenti di accedere alla tabella.

Opzioni

Entrambi i comandi hanno un'opzione NOINFOMSGS, disattivando i messaggi che altrimenti sarebbe venuto fuori durante l'esecuzione. DBREINDEX consente di ricostruire uno o tutti gli indici di una tabella in un unico comando. INDEXDEFRAG funziona solo indice alla volta, così tabelle con più indici richiedono più comandi. Il DBREINDEX consente di modificare fattore di riempimento di un indice, che ti permette di creare uno spazio più o meno libera nell'indice. Indici con più spazio libero occupano più spazio su disco, ma corrono leggermente più veloce se i programmi aggiungono spesso record alla tabella.