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.
Laden von Tabellen mit automatischer Kompression
Sie können Komprimierungskodierungen manuell auf Spalten in Tabellen anwenden, basierend auf Ihrer eigenen Auswertung der Daten. Oder Sie können den COPY Befehl mit der COMPUPDATE Einstellung ON verwenden, um die Komprimierung anhand von Beispieldaten automatisch zu analysieren und anzuwenden.
Sie können die automatische Kompression beim Erstellen und Laden einer völlig neuen Tabelle verwenden. Der COPY Befehl führt eine Komprimierungsanalyse durch. Sie können eine Komprimierungsanalyse auch durchführen, ohne Daten zu laden oder die Komprimierung einer Tabelle zu ändern, indem Sie den Befehl ANALYZE COMPRESSION für eine bereits ausgefüllte Tabelle ausführen. Sie können beispielsweise ausführen, ANALYZE COMPRESSION wenn Sie die Komprimierung einer Tabelle für die future Verwendung analysieren möchten, und dabei die vorhandenen Data Definition Language (DDL) -Anweisungen beibehalten.
Die automatische Kompression sorgt für den Ausgleich der allgemeinen Leistung bei der Auswahl von Kompressionskodierungen. Bereichseingeschränkte Scans können eine geringe Leistung zeigen, wenn Sortierschlüsselspalten stärker komprimiert sind als andere Spalten in der selben Abfrage. Daher überspringt die automatische Komprimierung die Datenanalysephase in den Sortierschlüsselspalten und behält die benutzerdefinierten Kodierungstypen bei.
Bei der automatischen Komprimierung wird die RAW Kodierung ausgewählt, wenn Sie nicht explizit einen Kodierungstyp definiert haben. ANALYZECOMPRESSIONverhält sich genauso. Für eine optimale Abfrageleistung sollten Sie die Verwendung von RAW Sortierschlüsseln in Betracht ziehen.
So funktioniert die automatische Kompression
Wenn der COMPUPDATE Parameter auf ON gesetzt ist, wendet der COPY Befehl eine automatische Komprimierung an, wenn Sie den COPY Befehl mit einer leeren Zieltabelle ausführen und alle Tabellenspalten entweder RAW kodiert oder nicht codiert sind.
Um eine automatische Komprimierung auf eine leere Tabelle anzuwenden, unabhängig von der aktuellen Komprimierungscodierung, führen Sie den COPY Befehl aus, wobei die COMPUPDATE Option auf ON gesetzt ist. Um die automatische Komprimierung zu deaktivieren, führen Sie den COPY Befehl aus, wobei die COMPUPDATE Option auf OFF gesetzt ist.
Sie können keine automatische Kompression auf eine Tabelle anwenden, die bereits Daten enthält.
Anmerkung
Um die automatische Kompression analysieren zu können, müssen in den geladenen Daten genügend Zeilen vorhanden sein (mindestens 100.000 Zeilen pro Slice), um eine relevante Stichprobe darzustellen.
Die automatische Kompression führt im Hintergrund die folgenden Operationen als Teil der Ladetransaktion aus:
-
Aus der Eingabedatei wird eine anfängliche Stichprobe von Zeilen geladen. Die Stichprobengröße basiert auf dem Wert des COMPROWS Parameters. Der Standardwert ist 100,000.
-
Für jede Spalte werden Kompressionsoptionen ausgewählt.
-
Die Stichprobenzeilen werden aus der Tabelle entfernt.
-
Die Tabelle wird erneut mit den gewählten Kompressionskodierungen erstellt.
-
Die gesamte Eingabedatei wird geladen und unter Verwendung der neuen Kodierungen komprimiert.
Nachdem Sie den COPY Befehl ausgeführt haben, ist die Tabelle vollständig geladen, komprimiert und einsatzbereit. Wenn Sie später weitere Daten laden, werden die angefügten Zeilen entsprechend der vorhandenen Kodierung komprimiert.
Wenn Sie nur eine Komprimierungsanalyse durchführen möchten, führen Sie den Befehl ANALYZE COMPRESSION aus. Dies ist effizienter als das Ausführen einer vollständigen AnalyseCOPY. Anschließend können Sie die Ergebnisse auswerten, um zu entscheiden, ob Sie die automatische Kompression verwenden oder die Tabelle manuell neu erstellen sollten.
Die automatische Komprimierung wird nur für den COPY Befehl unterstützt. Alternativ können Sie beim Erstellen der Tabelle manuell eine Kompressionskodierung anwenden. Informationen zur manuellen Kompressionskodierung finden Sie unter Spaltenkomprimierung zur Reduzierung der Größe der gespeicherten Daten.
Beispiel für eine automatische Kompression
Gehen Sie in diesem Beispiel davon aus, dass die TICKIT Datenbank eine Kopie der BIGLIST aufgerufenen LISTING Tabelle enthält und Sie eine automatische Komprimierung auf diese Tabelle anwenden möchten, wenn sie mit etwa 3 Millionen Zeilen geladen wird.
So laden Sie die Tabelle und komprimieren sie automatisch
-
Stellen Sie sicher, dass die Tabelle leer ist. Sie können die automatische Kompression nur auf leere Tabellen anwenden:
TRUNCATE biglist;
-
Laden Sie die Tabelle mit einem einzigen COPY Befehl. Auch wenn die Tabelle leer ist, wurde möglicherweise früher bereits eine Kodierung angegeben. Um sicherzustellen, dass Amazon Redshift eine Komprimierungsanalyse durchführt, setzen Sie den COMPUPDATE Parameter auf ON.
COPY biglist FROM 's3://amzn-s3-demo-bucket/biglist.txt' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' DELIMITER '|' COMPUPDATE ON;
Da keine COMPROWS Option angegeben ist, wird die standardmäßige und empfohlene Stichprobengröße von 100.000 Zeilen pro Slice verwendet.
-
Sehen Sie sich das neue Schema für die BIGLIST Tabelle an, um die automatisch ausgewählten Kodierungsschemas zu überprüfen.
SELECT "column", type, encoding from pg_table_def where tablename = 'biglist';
Column | Type | Encoding ----------------+-----------------------------+---------- listid | integer | az64 sellerid | integer | az64 eventid | integer | az64 dateid | smallint | none numtickets | smallint | az64 priceperticket | numeric(8,2) | az64 totalprice | numeric(8,2) | az64 listtime | timestamp without time zone | az64
-
Überprüfen Sie, ob die erwartete Zahl von Zeilen geladen wurde:
select count(*) from biglist;
count --------- 3079952 (1 row)
Wenn Zeilen später mithilfe von COPY INSERT OR-Anweisungen an diese Tabelle angehängt werden, werden dieselben Komprimierungskodierungen angewendet.