Columnstore Index – ein Renner

Unsere Experimente mit dem SQL Server 2012 (Denali) lassen uns zunehmend frohlocken: Tests mit dem neuen ColumnstoreIndex prognostizieren einen ganz erheblichen Performanceboost. In einer Tabelle mit ca. 3 Millionen Datensätzen, 4 verschieden Datentypen und unterschiedlichen Anzahlen von Ausprägungen haben wir jeweils pro Ausprägungen die Anzahl der Zeilen gezählt.

Die Ergebnisse lassen sich wie folgt zusammenfassen:

  1. Die Abfragen sind deutlich schneller. Bei 3 Ausprägungen in 3 Mill. Sätzen ergab sich Faktor 25-30 (280ms zu 10ms). Im Vergleich: Ein normaler Index brachte immerhin noch einen Faktor um zwei – was aber hier kein repräsentativer Vergleich ist.
  2. Je weniger Ausprägungen, desto größer der Performancegewinn. Bei kanpp 100.000 Ausprägungen  in 3 Mill. Sätzen gab es immerhin noch ein Faktor 1,3.
  3. Alle Datentypen (varchar, nvarchar, int, datetime) wiesen vergleichbare Werte auf.

Das Geheimnis der Geschwindigkeit ist an sich trivial: Statt wie sonst üblich die Attribute einer Zeile zusammen abzulegen, werden beim Columnstore Index die Attribute der Spalten zusammen abgelegt, was die Plattenzufgriffe erheblich reduzieren kann. Zusätzlich werden die Attribute komprimiert – und diese Komprimierung gewinnt an Effizienz, je weniger distinkte Attribute komprimiert werden müssen.

Es gibt natürlich auch ein Wehrmutstropfen. Eigentlich gibt es zwei:

  1. Tabellen, auf denen ein Columnstore-Index liegt, können nicht direkt manipuliert werden (Also kein Insert, Update, …). Das führt dazu, dass die beladenden ETL-Strecken komplexer werden, weil hier entweder die Indizes jeweils neu erstellt werden müssen oder – wenn es schnell gehen soll – ein Verfahren mit zwei Tabellen und nachgelagerter Zusammenführung etabliert werden muss.
  2.  Den Columnstore-Index wird es nur mit der Enterprise-Edition geben – nicht mit der neuen BI-Edition.

Ich freue mich schon auf das Lächeln in den Gesichtern der IT-Leiter…

Herzlichst, Torsten Katthöfer

 

Hinterlasse eine Antwort

Du musst angemeldet sein, um einen Kommentar zu erstellen.


1 Besucher online
0 Gäste, 1 Bots, 0 Mitglied(er)
Meiste Besucher heute: 3 um/am 06:10 UTC
Diesen Monat: 6 um/am 09-06-2018 19:18 UTC
Dieses Jahr: 19 um/am 07-03-2018 05:26 UTC
Jederzeit: 40 um/am 09-24-2012 13:16 UTC