Creazione di un indice su una tabella molto occupata


11

Abbiamo una tabella con molte insert\selectvolte (come 100 macchine che inseriscono \ aggiornano ogni secondo).

Qual è il modo migliore per creare un indice su una tabella che non può essere bloccato nemmeno per un secondo?

Se creo l'indice, sono sicuro che bloccherà le richieste e non posso farlo.

È un grande tavolo con 1 milione di righe +.

Risposte:


12

Non esiste un'opzione come CREATE INDEX WITH (NOLOCK)(e anche NOLOCKsu una query richiede blocchi, solo meno che senza il suggerimento).

Il meglio che farai è WITH (ONLINE = ON), che blocca ancora all'inizio e alla fine dell'operazione (entrambi relativi ai piani di ricompilazione relativi alla tabella - vedi questo post sul blog di Paul Randal per maggiori dettagli ).

Ciò ridurrà in modo significativo l'impatto della creazione dell'indice sulle applicazioni, ma non esiste un modo pratico per eliminare completamente tale impatto. Inoltre, questa funzione non è gratuita: richiede Enterprise Edition.

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.