Direkt zum Inhalt

Wie kann ich die Spaltenkodierung in Amazon Redshift entwerfen?

Lesedauer: 3 Minute
0

Ich möchte die Spaltenkodierung in Amazon Redshift entwerfen.

Kurzbeschreibung

Um die Spaltenkodierung in Amazon Redshift zu konfigurieren, verwende die Befehle ENCODE AUTO und ANALYZE COMPRESSION. Weitere Informationen findest du unter Komprimierungskodierungen.

Wenn du eine Sortierschlüsselspalte komprimierst, kann sich die Abfrageleistung verschlechtern, da Blockscans für bestimmte Abfragetypen hinzugefügt werden. Wenn du die Kodierungstypen für eine Tabelle manuell angibst, lege die RAW-Kodierung für die Sortierschlüsselspalte fest.

Weitere Informationen findest du unter Bewährte Methoden für das Entwerfen von Tabellen in Amazon Redshift.

Lösung

ENCODE AUTO verwenden, um die Spaltenkomprimierung zu maximieren

Verwende ENCODE AUTO, um die Spaltenkomprimierung in den Amazon Redshift-Tabellen automatisch zu optimieren. Standardmäßig analysiert ENCODE AUTO kontinuierlich die Workload-Muster des Clusters, um die Abfrageleistung zu maximieren und den Bedarf an manuellem Komprimierungsmanagement zu reduzieren.

Wenn du für eine Spalte in der Tabelle einen Codierungstyp angibst, deaktiviere ENCODE AUTO.

Verwende die folgende Abfrage, um zu überprüfen, ob ENCODE AUTO für eine Tabelle aktiviert ist:

SELECT "table", encoded FROM svv_table_info WHERE "table" = 'table_name';

Hinweis: Ersetze table_name durch den Namen der Tabelle.

Den Befehl ANALYZE COMPRESSION ausführen, um eine Analyse der Tabelle zu überprüfen

Um eine Komprimierungsanalyse durchzuführen und einen Bericht zu erstellen, der die Komprimierungskodierung für die Tabelle vorschlägt, führe den Befehl ANALYZE COMPRESSION aus:

ANALYZE COMPRESSION lineitem;

Hinweis: Ersetze lineitem durch den Tabellennamen.

Beispielausgabe:

Table   |     Column      | Encoding | Est_reduction_pct
----------+-----------------+----------+-------------------
 lineitem | l_orderkey      | raw      | 0.00
 lineitem | l_partkey       | az64     | 33.34
 lineitem | l_suppkey       | az64     | 45.46
 lineitem | l_linenumber    | az64     | 87.88
 lineitem | l_quantity      | az64     | 80.00
 lineitem | l_extendedprice | az64     | 60.32
 lineitem | l_discount      | az64     | 90.77
 lineitem | l_tax           | az64     | 90.77
 lineitem | l_returnflag    | zstd     | 80.99
 lineitem | l_linestatus    | zstd     | 86.86
 lineitem | l_shipdate      | az64     | 61.15
 lineitem | l_commitdate    | az64     | 61.26
 lineitem | l_receiptdate   | az64     | 61.15
 lineitem | l_shipinstruct  | zstd     | 96.50
 lineitem | l_shipmode      | bytedict | 88.89
 lineitem | l_comment       | zstd     | 70.36
 lineitem | l_dummy         | zstd     | 99.97
(17 rows)

Hinweis: Für jede Spalte enthält der Bericht eine Schätzung der potenziellen Speicherplatzreduzierung im Vergleich zur RAW-Codierung.

(Optional) Um dir das Verständnis der Ausgabe des Befehls ANALYZE COMPRESSION zu erleichtern, kannst du die Tabellendefinition anzeigen. Führe den folgenden Befehl aus:

SHOW TABLE lineitem;

Hinweis: Ersetze lineitem durch den Tabellennamen.

Beispielausgabe:

Show Table DDL statement             
-------------------------------------------------
 CREATE TABLE public.lineitem (                 
     l_orderkey integer ENCODE raw,             
     l_partkey integer ENCODE raw,              
     l_suppkey integer ENCODE raw,              
     l_linenumber integer ENCODE raw,           
     l_quantity numeric(15,2) ENCODE raw,       
     l_extendedprice numeric(15,2) ENCODE raw,  
     l_discount numeric(15,2) ENCODE raw,       
     l_tax numeric(15,2) ENCODE raw,            
     l_returnflag character(1) ENCODE raw,      
     l_linestatus character(1) ENCODE raw,      
     l_shipdate date ENCODE raw,                
     l_commitdate date ENCODE raw,              
     l_receiptdate date ENCODE raw,             
     l_shipinstruct character(25) ENCODE raw,   
     l_shipmode character(10) ENCODE raw,       
     l_comment character varying(44) ENCODE raw,
     l_dummy character varying(10) ENCODE raw   
 )                                              
 DISTSTYLE AUTO                                 
 SORTKEY ( l_orderkey );
(1 row)

ANALYZE COMPRESSION dient als Ratgeber und ändert die Spaltenkodierungen der Tabelle nicht. Um die vorgeschlagenen Kodierungen anzuwenden, erstelle die Tabelle neu oder führe den Befehl ALTER TABLE aus:

ALTER TABLE lineitem ALTER COLUMN l_dummy ENCODE example_compression;

Hinweis: Ersetze lineitem durch den Tabellennamen, l_dummy durch den Spaltennamen und example_compression durch die Komprimierungskodierung.

Ähnliche Informationen

Wie kann ich Sperren in Amazon Redshift erkennen und freigeben?

Spaltenkomprimierung zur Reduzierung der Größe der gespeicherten Daten

AWS OFFICIALAktualisiert vor 5 Monaten