Warum führt Amazon Redshift den COPY ANALYZE-Prozess aus, wenn STATUPDATE deaktiviert ist?
Ich habe versucht, den Befehl COPY zu verwenden, um Daten in eine neue Tabelle in Amazon Redshift zu laden. Ich habe sogar den COMPUPDATE OFF-Parameter hinzugefügt. Warum läuft COPY ANALYZE immer noch?
Kurzbeschreibung
Bevor Sie eine Tabelle in Amazon Redshift erstellen, wählen Sie den Verteilungsstil Ihrer Tabelle aus. Wenn eine Tabelle keinen Verteilungsstil angibt, wird standardmäßig die AUTO-Verteilung verwendet. Die AUTO-Verteilungsfunktion von Amazon Redshift verwendet dann den COPY ANALYZE -Prozess, um zu ermitteln, ob die Tabelle die EVEN- oder ALL-Verteilung verwenden soll.
Hinweis: Der Parameter COMPUPDATE OFF führt COPY ANALYZE weiterhin für Tabellen aus, die einen AUTO-Verteilungsstil verwenden. Der Parameter STATUPDATE OFF deaktiviert oder unterdrückt den Befehl COPY ANALYZE nicht.
Lösung
1. Überprüfen Sie den aktuellen Verteilungsstil einer Tabelle, indem Sie SHOW TABLE ausführen:
SHOW TABLE [schema_name.]table_name
Hinweis: Standardmäßig wendet Amazon Redshift die AUTO-Verteilung an, wenn in der CREATE TABLE-Anweisung kein Verteilungsstil angegeben ist.
2. Wenn die AUTO-Verteilung aktiviert ist, erstellen Sie eine Tabelle mit einem definierten Verteilungsstil. Die Angabe eines Verteilungsstils verhindert, dass COPY ANALYZE ausgeführt wird.
Das folgende Beispiel spezifiziert einen EVEN-Verteilungsstil:
create table rs_example_test (id int)diststyle even;
Weitere Informationen zu Verteilungsstilen finden Sie unter Arbeiten mit Datenverteilungsstilen.
3. Verwenden Sie den Befehl COPY, um die Daten in Ihre Tabelle zu laden, und hängen Sie sie dann mit den STATUPDATE OFF -Parametern an.
Hinweis: Es hat sich bewährt, den Befehl COPY zu verwenden, um große Datenmengen zu laden, anstatt einzelne INSERT-Anweisungen zu verwenden. Dadurch wird das Risiko von Leistungsproblemen minimiert.
4. Führen Sie eine Abfrage in der SVL\ _STATEMENTTEXT-Systemtabelle aus und filtern Sie dann nach der Prozess-ID (PID), die sich auf Ihre Sitzung bezieht:
select userid, xid, pid, trim(label) as label, starttime, endtime, sequence, trim(type) as type, left(text,60) text from svl_statementtext where pid = 26815 order by xid, starttime, sequence;
Die obige Syntax überprüft, ob COPY ANALYZE als Teil der COPY -Transaktion ausgeführt wurde.
Die Ausgabe könnte wie folgt aussehen:
userid xid pid label starttime endtime sequence type text 100 78915 26815 default 2019-03-19 14:06:19 2019-03-19 14:06:21 0 QUERY copy rs_test3 from 's3://xxxxx-rs-log/AWSLogs/rs_test2.csv'\ 100 78915 26815 default 2019-03-19 14:06:21 2019-03-19 14:06:21 0 UTILITY COMMIT
Dies bestätigt, dass COPY ANALYZE nicht mehr als Teil der COPY -Transaktion ausgeführt wird.
Verwandte Informationen
Verwenden einer Staging-Tabelle, um eine Zusammenführung durchzuführen (Upsert)
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 8 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 10 Monaten