Clustered- und Columnstore-Indizes

Sep 09 2020

Ich habe gerade einen neuen Job angefangen, bei dem wir viele Tabellen aus ETL-Prozessen haben. Mir wurde gesagt, dass ich keinen Columnstore oder Clustered-Index für Tabellen erstellen soll, da der Server nicht über die Ressourcen (CPU) verfügt. Im Grunde ist also alles Haufen. Auf vielen Tabels gibt es keine glanzlosen Indizes. Wir erhalten Daten von vielen Quellsystemen und nachdem die Daten gelandet sind, transformieren wir die Daten und kombinieren sie ...

Ich möchte nur hören, ob es in einigen Einstellungen richtig klingt, keinen Columnstore oder Clustered-Index zu verwenden. Benötigt es mehr CPU, um Clustered-Indizes zu verwenden, wenn Tabellen für Analysen verwendet werden?

Antworten

3 MichaelGreen Sep 09 2020 at 21:10

Nahezu jede Implementierungsentscheidung ist ein Kompromiss zwischen konkurrierenden Faktoren. Das Erstellen eines Columnstore-Index ist CPU-intensiv, aber danach sind Abfragen, die viele Zeilen berühren, schnell und Aktualisierungen langsam. Was ist im Durchschnitt für Ihre Arbeitsbelastung am wichtigsten? Gibt es ein Zeitfenster, in dem diese Menge an CPU verbraucht werden kann, ohne andere Teile des Systems zu beschädigen? Werden die zusätzlichen Kosten im zukünftigen Nutzen zurückgezahlt? Was ist das Problem, für das ein Columnstore die Lösung ist, und wurde dies in anderen Aspekten des Systems angesprochen?

Sie erwähnen ETL. Oft werden solche Tabellen nur als Scans verarbeitet, bei denen jede Zeile von jeder Operation berührt wird. In solchen Fällen verlangsamen Indizes die Verarbeitung, da sie zusätzlich zur Tabelle geschrieben werden müssen.

Wahrscheinlich gibt es Gründe für die aktuellen Einschränkungen. Verstehe, warum sie installiert wurden. Wenn diese Umstände nicht mehr zutreffen (möglicherweise ein Serverversions-Upgrade oder eine bessere Hardware), versuchen Sie ein Experiment in einer Testumgebung.