Indici cluster e columnstore
Ho appena iniziato un nuovo lavoro in cui abbiamo molte tabelle dai processi ETL. Mi è stato detto di non mettere alcun indice columnstore o cluster su nessuna tabella poiché il server non ha le risorse (CPU). Quindi praticamente tutto è un mucchio. Ci sono indici non raggruppati su molte tabelle. Otteniamo dati da molti sistemi di origine e dopo che i dati sono stati acquisiti, trasformiamo i dati e li combiniamo ...
Voglio solo sentire se suona bene in alcune impostazioni per non utilizzare alcun indice columnstore o cluster. Richiede più CPU per utilizzare gli indici cluster quando le tabelle vengono utilizzate per l'analisi?
Risposte
Praticamente ogni decisione di implementazione è un compromesso tra fattori concorrenti. La creazione di un indice columnstore richiede un uso intensivo della CPU, ma le query successive che toccano molte righe sono veloci e gli aggiornamenti sono lenti. Qual è il più importante per il tuo carico di lavoro, in media? Esiste una finestra temporale in cui quella quantità di CPU può essere consumata senza rompere altre parti del sistema? Il costo aggiuntivo viene rimborsato in futuro? Qual è il problema per cui un columnstore è la soluzione e questo è stato affrontato in altri aspetti del sistema?
Parli di ETL. Spesso tali tabelle vengono elaborate solo come scansioni in cui ogni riga viene toccata da ogni operazione. In questi casi, gli indici rallenteranno l'elaborazione perché devono essere scritti oltre alla tabella.
Probabilmente ci sono ragioni per le attuali restrizioni. Comprendi perché sono stati messi in atto. Se queste circostanze non sono più valide (forse un aggiornamento della versione del server o un hardware migliore ora) prova un esperimento in un ambiente di prova.