Bereinigen von Tabellen - 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.

Bereinigen von Tabellen

Amazon Redshift kann im Hintergrund automatisch eine VACUUM DELETE-Operation für Tabellen sortieren und ausführen. Um Tabellen nach einem Laden oder einer Reihe von inkrementellen Updates zu bereinigen, können Sie auch den VACUUM-Befehl ausführen (entweder gegen die gesamte Datenbank oder gegen einzelne Tabellen).

Anmerkung

Nur Benutzer mit den erforderlichen Tabellenberechtigungen können eine Tabelle effektiv bereinigen. Wenn VACUUM ohne die notwendigen Tabellenberechtigungen ausgeführt, wird die Operation zwar erfolgreich abgeschlossen, hat jedoch keine Wirkung. Eine Liste der gültigen Tabellenberechtigungen zum effektiven Ausführen von VACUUM finden Sie unter VACUUM.

Aus diesem Grund empfehlen wir, das Vacuuming einzelner Tabellen bei Bedarf durchzuführen. Wir empfehlen ebenfalls diesen Ansatz, da das Vacuuming der gesamten Datenbank ein teurer Vorgang sein kann.

Automatische Tabellensortierung

Amazon Redshift sortiert automatisch die Daten im Hintergrund, um die Tabellendaten in der Reihenfolge ihres Sortierschlüssels zu sortieren. Amazon Redshift verfolgt Ihre Scan-Abfragen, um festzustellen, welche Abschnitte der Tabelle von der Sortierung profitieren.

Abhängig von der Auslastung des Systems leitet Amazon Redshift die Sortierung automatisch ein. Diese automatische Sortierung erübrigt die Ausführung des Befehls VACUUM, um die Daten in der Reihenfolge der Sortierkriterien zu halten. Wenn Sie Daten vollständig nach dem Sortkey sortiert benötigen, z. B. nach einer großen Datenmenge, können Sie den Befehl VACUUM trotzdem manuell ausführen. Um festzustellen, ob Ihre Tabelle von der Ausführung von VACUUM SORT profitieren wird, überwachen Sie die Spalte vacuum_sort_benefit in SVV_TABLE_INFO.

Amazon Redshift verfolgt Scan-Abfragen, die den Sortierschlüssel für jede Tabelle verwenden. Amazon Redshift schätzt den maximalen Prozentsatz der Verbesserung beim Scannen und Filtern von Daten für die Tabelle (wenn die Tabelle vollständig sortiert war). Diese Schätzung ist in der Spalte vacuum_sort_benefit in SVV_TABLE_INFO sichtbar. Sie können diese Spalte zusammen mit der Spalte unsorted verwenden, um festzulegen, wann Abfragen davon profitieren können, VACUUM SORT manuell für eine Tabelle auszuführen. Die Spalte unsorted spiegelt die physische Sortierreihenfolge einer Tabelle wider. Die Spalte vacuum_sort_benefit gibt die Auswirkung der Sortierung einer Tabelle durch manuelles Ausführen von VACUUM SORT an.

Nehmen Sie beispielsweise die folgende Abfrage:

select "table", unsorted,vacuum_sort_benefit from svv_table_info order by 1;
table | unsorted | vacuum_sort_benefit -------+----------+--------------------- sales | 85.71 | 5.00 event | 45.24 | 67.00

Obwohl die Tabelle "sales" ~86 % physisch unsortiert ist, hat dies nur einen Einfluss 5 % auf die Abfrageleistung. Dies kann entweder daran liegen, dass nur ein kleiner Teil der Tabelle von Abfragen angesprochen wird oder dass nur sehr wenige Abfragen auf die Tabelle zugegriffen haben. Die Tabelle "event" ist ~45 % physisch unsortiert. Aber die Änderung der Abfrageleistung von 67 % zeigt auf, dass entweder ein größerer Teil der Tabelle von Abfragen abgerufen wurde oder dass die Anzahl der auf die Tabelle zugreifenden Abfragen groß war. Die Tabelle "event" kann potentiell von der Ausführung von VACUUM SORT profitieren.

Automatisches Aufrufen von VACUUM DELETE

Wenn Sie einen Löschvorgang ausführen, werden die Zeilen zum Löschen markiert, jedoch nicht entfernt. Amazon Redshift führt automatisch einen VACUUM DELETE-Vorgang im Hintergrund aus, der auf der Anzahl der gelöschten Zeilen in Datenbanktabellen basiert. Amazon Redshift legt für VACUUM DELETE eine zeitplangesteuerte Ausführung so fest, dass diese Ausführung in Zeiten fällt, in denen der Workload gering ist, und hält die Ausführung bei hoher Auslastung an.

Häufigkeit von Bereinigungen (VACUUM)

Sie sollten Bereinigungen so häufig wie notwendig ausführen, um eine konsistente Abfrageleistung aufrechtzuerhalten. Bei der Festlegung der Häufigkeit, mit der Sie den Befehl VACUUM ausführen, sollten Sie folgende Faktoren berücksichtigen:

  • Führen Sie VACUUM während Zeiten aus, in denen Sie für den Cluster nur minimale Aktivität erwarten, beispielsweise abends oder während festgelegter Zeitfenster für die Datenbankadministration.

  • Führen Sie VACUUM-Befehle außerhalb von Wartungsfenstern aus. Weitere Informationen finden Sie unter Zeitplanung um Wartungsfenster.

  • Eine große, nicht sortierte Region führt zu längeren Bereinigungszeiten. Wenn Sie die Bereinigung verzögern, dauert sie länger, da mehr Daten neu organisiert werden müssen.

  • VACUUM ist eine I/O-intensive Operation. Je länger es also dauert, bis die Bereinigung abgeschlossen ist, desto größer sind die Auswirkungen auf gleichzeitig ausgeführte Abfragen und andere Datenbankoperationen, die für Ihren Cluster ausgeführt werden.

  • VACUUM benötigt für Tabellen, die eine überlappende Sortierung verwenden, länger. Um zu beurteilen, ob überlappende Tabellen neu sortiert werden müssen, fragen Sie die Ansicht SVV_INTERLEAVED_COLUMNS ab.

Sortierphase und Zusammenführungsphase

Amazon Redshift führt Bereinigungsoperationen in zwei Phasen aus. Zunächst werden die Zeilen in der nicht sortierten Region sortiert. Anschließend werden die neu sortierten Zeilen am Ende der Tabelle mit den vorhandenen Zeilen zusammengeführt, wenn notwendig. Beim Bereinigen einer großen Tabelle wird die Bereinigungsoperation in einer Reihe von Schritten ausgeführt, die aus inkrementellen Sortierungen gefolgt von Zusammenführungen bestehen. Wenn die Operation fehlschlägt oder Amazon Redshift während der Bereinigung offline geht, befindet sich die teilweise bereinigte Tabelle oder Datenbank in einem konsistenten Zustand. Sie müssen jedoch die Bereinigungsoperation manuell neu starten. Inkrementelle Sortierungen gehen verloren. Die zusammengeführten Zeilen, für die vor dem Fehler ein Commit ausgeführt wurde, müssen jedoch nicht erneut bereinigt werden. Wenn die nicht sortierte Region groß ist, kann erhebliche Zeit verloren gehen. Weitere Informationen zu den Sortierungs- und Zusammenführungsphasen finden Sie unter Verwalten des Volumens zusammengeführter Zeilen.

Benutzer können auf Tabellen zugreifen, während sie bereinigt werden. Sie können Abfragen und Schreiboperationen ausführen, während eine Tabelle bereinigt wird. Wenn jedoch DML und eine Bereinigung gleichzeitig ausgeführt werden, dauern beide Vorgänge möglicherweise länger. Wenn Sie während einer Bereinigung UPDATE- und DELETE-Anweisungen ausführen, wird die Systemleistung möglicherweise reduziert. Inkrementelle Zusammenführungen blockieren gleichzeitig ausgeführte UPDATE- und DELETE-Operationen. UPDATE- und DELETE-Operationen wiederum blockieren inkrementelle Zusammenführungen für die betroffenen Tabellen. DDL-Operationen wie ALTER TABLE werden blockiert, bis die Bereinigungsoperation für die Tabelle abgeschlossen ist.

Anmerkung

Verschiedene Modifikatoren für VACUUM steuern die Funktionsweise. Sie können sie verwenden, um die Bereinigung an den aktuellen Bedarf anzupassen. Beispielsweise verkürzt die Verwendung von VACUUM RECLUSTER die Bereinigung, indem keine vollständige Verschmelzung durchgeführt wird. Weitere Informationen finden Sie unter VACUUM.

Schwellenwert für die Bereinigung

Standardmäßig überspringt VACUUM die Sortierungsphase für alle Tabellen, in denen mehr als 95 Prozent der Tabellenzeilen bereits sortiert sind. Das Überspringen der Sortierungsphase kann die Leistung von VACUUM deutlich verbessern. Um den Standardschwellenwert für die Sortierung für eine einzelne Tabelle zu ändern, verwenden Sie den Tabellennamen und den Parameter TO threshold PERCENT, wenn Sie den Befehl VACUUM ausführen.

Arten von Bereinigungen

Weitere Informationen zu den verschiedenen Arten von Bereinigungstypen finden Sie unter VACUUM.