Da Datenmengen in einer Datenbank oft sehr stark wachsen, wird nach Wegen gesucht, den Speicherplatz, der auf der Festplatte verbraucht wird, zu reduzieren. Aus diesem Grund bietet der SQL Server 2014 mehrere Möglichkeiten den Verbrauch an Festplattenspeicher zu reduzieren. Dieser Blogbeitrag beschreibt die Kompressionsrate Anhand von vier verschiedenen Techniken.
Hierzu zählen die Page- und Rowkompression, sowie der Columnstore. Letzterer besitzt noch die Möglichkeit des „Archivmodus“ wodurch eine stärkere Kompression erreicht werden kann. Für diesen Versuch wurde als erstes eine Tabelle genutzt, die zwei Nvarchar(50)-, eine Integer- und eine Datumspalte hat. Die Tabelle hat insgesamt 9.830.400 Einträge, wobei sehr viele identisch sind. Der Speicherplatz der Tabelle wurde gemessen, und im Anschluss die verschiedenen Kompressionstechniken eingesetzt. Das Ergebnis hiervon wird in der folgenden Tabelle dargestellt. Dabei wurden der benötigte Speicherplatz und die Zeitdauer für die Kompression gemessen.
Größe in MB | Dauer in Sekunden | |
Tabelle |
618,48 |
– |
Row Kompression |
347,80 |
5 |
Page Kompression |
130,93 |
15 |
Columnstore Index |
0,09 |
5 |
Columnstore Index Archiv |
0,08 |
11 |
Anhand der Ergebnisse erkennt man, dass vor allem die Columnstore-Indizes eine extreme Verkleinerung des benötigten Speicherplatzes bringen können. Allerdings wird diese sehr hohe Kompression vor allem durch die vielen identischen Datensätze ermöglicht. Ein differenziertes Bild ergibt sich bei einem Test mit einer anderen Tabelle. Diese enthält 5 Integerwerte und eine Spalte mit dem Datetime-Datentyp.
Größe in MB | Dauer in Sekunden | |
Tabelle |
1.035,70 |
|
Row Kompression |
838,23 |
9 |
Page Kompression |
373,46 |
37 |
Columnstore Index |
362,91 |
56 |
Columnstore Index Archiv |
233,44 |
73 |
Auch hier bieten die Columnstores die beste Kompression, allerdings bei weitem nicht mit einem solchen Vorsprung, wie im vorherigen Test. Auch dauert die Erstellung der Indizes länger, als Page- bzw. Rowkompression. Eine teilweise erhebliche Verringerung der ursprünglich benötigten Datenmenge wird jedoch trotzdem erreicht.