Mi piacerebbe creare un indice su una vista che ho ma ho bisogno di assicurarmi che i dati possano ancora essere letti mentre l'indice viene creato. Stavo leggendo un article che ha suggerito che quando si crea un indice non cluster che i dati sono ancora leggibili se si specifica l'ONLINE = ON L'opzione (esempio qui sotto):La creazione di un indice non cluster su una tabella di SQL Server 2005 impedisce la selezione?
CREATE UNIQUE CLUSTERED INDEX CLUST_IDX_SQLTIPS
ON SQLTips (tip) with (ONLINE=ON)
Sto capendo questo correttamente? C'è qualche potenziale problema di cui dovrei essere a conoscenza prima di creare indici su una vista che deve essere leggibile mentre creo il mio indice?
Grazie non me ne sono reso conto. Ho in programma di creare due indici su questa vista, il cluster iniziale che hai menzionato e un non cluster dopo quello. Sai comunque di mantenere i dati a mio avviso leggibili mentre creo il cluster iniziale? BTW Sto eseguendo l'edizione aziendale. –
La vista indice cluster bloccherà le righe nella tabella, bloccando in tal modo le letture delle righe bloccate (sotto il livello di serializzazione predefinito). Quanto è grande il tavolo? Stiamo parlando di pochi secondi o di alcune ore di creazione dell'indice? Si può prendere in considerazione l'abilitazione di un'istantanea di lettura commessa, questo consentirà agli SELECT di andare avanti inalterati. Ma questo ha un impatto globale sul sistema, specialmente su tempdb, quindi dovresti testarlo in anticipo. –
La tabella ha oltre 9 milioni di record. Sto pensando che gli indici impiegherebbero circa 15 minuti per creare. Se le persone non riescono a leggere per 15 minuti, avrei un problema. Potresti essere più specifico sull'impatto che l'attivazione di read commited avrebbe sul sistema? Come consiglieresti di testare prima mano? –