Una banca dati informatica che vede frequenti aggiunge , elimina o aggiornamenti saranno , nel corso del tempo , soffrire indice di frammentazione , rallentando il database giù . Software di database di Microsoft SQL Server dispone di due ( SQL ) comandi di Structured Query Language che affrontano questo problema : DBCC INDEXDEFRAG e DBCC DBREINDEX . Anche se entrambi risolvono il problema, le differenze tra i due dettare come utilizzarli. Azione
Il comando DBREINDEX ricostruisce gli indici delle tabelle da zero , mentre INDEXDEFRAG mantiene gli indici , ma riorganizza il loro contenuto . È possibile eseguire l'equivalente di DBREINDEX mediante emissione di DROP INDEX e CREATE INDEX per ogni indice da ricostruire ; DBREINDEX è più veloce e meno soggetto a errori di battitura . INDEXDEFRAG compatta l'indice secondo il suo fattore di riempimento , lo rimuove eventuali 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 funziona 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 che per ricostruirlo con DBREINDEX . Tuttavia, se si è lasciato una notevole quantità di passaggio in quanto si reindicizzato il database , INDEXDEFRAG richiede più di DBREINDEX .
Esclusivo contro Shared accesso
DBCC DBREINDEX richiede l'accesso esclusivo al tavolo , in modo efficace blocco di tutti gli utenti e processi fuori mentre funziona. Gli indici delle tabelle sono incomplete fino a quando il completamento del comando , così le richieste degli utenti per i dati fallirebbe se hanno cercato l'accesso alla tabella . 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 , spegnendo ogni messaggi che altrimenti nascere durante l'esecuzione. DBREINDEX consente di ricostruire uno o tutti gli indici di una tabella in un unico comando . INDEXDEFRAG lavora su un solo indice alla volta , in modo da tabelle con più indici richiede più comandi . Il DBREINDEX consente di cambiare fattore di riempimento di un indice, che ti permette di creare spazi più o meno libero nell'indice . Indici con più spazio libero occupano più spazio su disco , ma corrono leggermente più veloce se i programmi frequentemente aggiungere record alla tabella .