Das Unternehmen, für das ich arbeite, verfügt über einige SQL Server-Datenbanken mit Tabellen mit + - 500.000.000 Zeilen. Wir führen Enterprise-Editionen von SQL Server 2008R2 und 2014 aus.
Big Data-Typen
Wenn ich mir die verwendeten Datentypen in der größten Tabelle ansehe, sehe ich viele BIGINT-Spalten. Ich untersuchte die Daten in diesen Spalten mit einem Skript von Thomas Larock und schrieb selbst die Werte MIN () und MAX (). Ich kam zu dem Schluss, dass Daten in diesen BIGINT-Spalten problemlos in INT- oder sogar SMALLINT / TINYINT-Spalten angepasst werden können. (Ich bin mir bewusst, dass einige Spalten in Zukunft möglicherweise den Bereich BIGINT benötigen, daher ändere ich nicht blind alle Datentypen, ohne vorher mit den Entwicklern zu sprechen.)
Beim Vergleich der möglichen Einsparungen beim Ändern der Datentypen scheint die Tabelle halb so groß zu sein wie derzeit (ohne Berücksichtigung von Indizes und anderen Tabellen). Diese Zahlen sind ohne Datenkomprimierung.
REIHEN-Komprimierung
In der großen Tabelle ist die ROW-Komprimierung aktiviert. Ich frage mich, welche tatsächlichen Auswirkungen das "Verkleinern" der Spaltendatentypen haben könnte, wenn man bedenkt, dass bei der ROW-Komprimierung nur die benötigten Bytes verwendet werden . Wenn beispielsweise ein Wert in 1 Byte gespeichert werden kann, dauert die Speicherung nur 1 Byte.
Aktuelle Frage
Würde es helfen, Datentypen zu verkleinern, damit die ROW-Komprimierung weniger Ressourcen verbraucht? Oder ist es sicher zu sagen, dass es keinen Unterschied zwischen den Datentypen BIGINT, INT oder SMALLINT gibt, da die ROW-Komprimierung aktiviert ist?
quelle