Mostly-Kodierung - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Mostly-Kodierung

Mostly-Kodierungen sind nützlich, wenn der Datentyp für eine Spalte größer ist, als es die meisten gespeicherten Werte erfordern. Durch die Angabe einer Mostly-Kodierung für diese Art von Spalten können Sie die Mehrzahl der Werte in der Spalte zu einer kleineren Standardspeichergröße komprimieren. Die übrigen Werte, die nicht komprimiert werden können, werden in ihrer rohen Form gespeichert. Sie können beispielsweise eine 16-Bit-Spalte wie eine INT2-Spalte zu einer 8-Bit-Speichergröße komprimieren.

Im Allgemeinen funktionieren Mostly-Kodierungen mit den folgenden Datentypen:

  • SMALLINT/INT2 (16-Bit)

  • INTEGER/INT (32-Bit)

  • BIGINT/INT8 (64-Bit)

  • DECIMAL/NUMERIC (64-Bit)

Wählen Sie die Variante der Mostly-Kodierung, die der Größe des Datentyps für die Spalte am besten entspricht. Sie können beispielsweise MOSTLY8 auf eine Spalte anwenden, die als 16-Bit-Ganzzahlspalte definiert ist. Die Anwendung von MOSTLY16 auf eine Spalte mit einem 16-Bit-Datentyp oder MOSTLY32 auf eine Spalte mit einem 32-Bit-Datentyp ist nicht zulässig.

Mostly-Kodierungen sind möglicherweise weniger effektiv als keine Kompression, wenn eine vergleichsweise große Zahl der Werte in der Spalte nicht komprimiert werden kann. Bevor Sie eine dieser Kodierungen auf eine Spalte anwenden, führen Sie eine Überprüfung durch. Die meisten Werte, die Sie jetzt (und wahrscheinlich in der Zukunft) laden, sollten in die in der folgenden Tabelle gezeigten Bereiche passen.

Codierung Komprimierte Speichergröße Bereich von Werten, die komprimiert werden können (Werte außerhalb des Bereichs werden nicht komprimiert gespeichert).
MOSTLY8 1 Byte (8 Bits) -128 bis +127
MOSTLY16 2 Bytes (16 Bits) -32768 bis +32767
MOSTLY32 4 Bytes (32 Bits) -2147483648 bis +2147483647
Anmerkung

Ignorieren Sie bei Dezimalwerten das Dezimalzeichen, um zu ermitteln, ob der Wert dem Bereich entspricht. Beispielsweise wird 1.234,56 als 123.456 behandelt und kann in einer MOSTLY32-Spalte komprimiert werden.

Die Spalte VENUEID in der Tabelle VENUE ist beispielsweise als nicht komprimierte Ganzzahlspalte definiert. Das bedeutet, dass ihre Werte 4 Bytes Speicher verbrauchen. Der aktuelle Bereich von Werten in der Spalte ist 0 bis 309. Daher würde der Speicherplatz für jeden Wert in dieser Spalte auf 2 Bytes reduziert werden, wenn diese Tabelle mit MOSTLY16-Kodierung für VENUEID neu erstellt und geladen würde.

Wenn die VENUEID-Werte, die in einer anderen Tabelle referenziert werden, überwiegend zwischen 0 und 127 liegen, wäre es sinnvoll, diese Fremdschlüsselspalte als MOSTLY8 zu kodieren. Bevor Sie diese Wahl treffen, führen Sie mehrere Abfragen für die referenzierenden Tabellendaten aus, um festzustellen, ob die Werte überwiegend im 8-Bit-, 16-Bit- oder 32-Bit-Bereich liegen.

Die folgende Tabelle zeigt komprimierte Größen für spezifische numerische Werte, wenn die MOSTLY8-, MOSTLY16- und MOSTLY32-Kodierungen verwendet werden:

Ursprünglicher Wert Ursprüngliche INT- oder BIGINT-Größe (Bytes) Größe mit MOSTLY8-Komprimierung (Bytes) Größe mit MOSTLY16-Komprimierung (Bytes) Größe mit MOSTLY32-Komprimierung (Bytes)
1 4 1 2 4
10 4 1 2 4
100 4 1 2 4
1000 4 Identisch mit der Größe der nicht komprimierten Daten 2 4
10000 4 2 4
20000 4 2 4
40000 8 Identisch mit der Größe der nicht komprimierten Daten 4
100000 8 4
2000000000 8 4