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 Tabellen im Hintergrund automatisch sortieren und einen VACUUM DELETE Vorgang 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 ohne die erforderlichen Tabellenberechtigungen ausgeführt VACUUM wird, wird der Vorgang erfolgreich abgeschlossen, hat jedoch keine Auswirkung. Eine Liste der gültigen Tabellenberechtigungen, die effektiv ausgeführt werden könnenVACUUM, finden Sie unterVACUUM.

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. Durch diese automatische Sortierung muss der VACUUM Befehl nicht mehr ausgeführt werden, um die Daten in der Reihenfolge der Sortierschlüssel zu halten. Wenn Sie Daten benötigen, die vollständig in der Sortierschlüsselreihenfolge sortiert sind, z. B. nach einem großen Datenladevorgang, können Sie den VACUUM Befehl trotzdem manuell ausführen. Um festzustellen, ob Ihre Tabelle von der Ausführung profitieren wird VACUUMSORT, überwachen Sie die vacuum_sort_benefit Spalte inSVV_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 unsorted Spalte verwenden, um zu bestimmen, wann Abfragen von der manuellen Ausführung VACUUM SORT einer Tabelle profitieren können. Die Spalte unsorted spiegelt die physische Sortierreihenfolge einer Tabelle wider. Die vacuum_sort_benefit Spalte gibt an, welche Auswirkungen das Sortieren einer Tabelle durch manuelles Ausführen hat VACUUMSORT.

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. Das „Ereignis“ der Tabelle kann potenziell von der Ausführung profitieren VACUUMSORT.

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 VACUUM DELETE plant die Ausführung in Zeiten reduzierter Auslastung und unterbricht den Vorgang in Zeiten hoher Auslastung.

VACUUMFrequenz

Sie sollten Bereinigungen so häufig wie notwendig ausführen, um eine konsistente Abfrageleistung aufrechtzuerhalten. Berücksichtigen Sie diese Faktoren, wenn Sie bestimmen, wie oft Ihr VACUUM Befehl ausgeführt werden soll:

  • Führen Sie das Programm zu VACUUM Zeiten aus, in denen Sie mit minimaler Aktivität auf dem Cluster rechnen, z. B. abends oder in bestimmten Datenbankverwaltungsfenstern.

  • VACUUMBefehle außerhalb der Wartungsfenster ausführen. 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.

  • VACUUMist ein I/O-intensiver Vorgang. Je länger es also dauert, bis Ihr Vakuum abgeschlossen ist, desto mehr Auswirkungen hat es auf gleichzeitige Abfragen und andere Datenbankoperationen, die auf Ihrem Cluster ausgeführt werden.

  • VACUUMdauert länger bei Tabellen, die Interleaved-Sortierung verwenden. 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 Schreibvorgänge ausführen, während eine Tabelle gelöscht wird, aber wenn DML und ein Vakuumvorgang gleichzeitig ausgeführt werden, kann beides länger dauern. Wenn Sie DELETE AND-Anweisungen während eines Vakuumvorgangs ausführenUPDATE, kann die Systemleistung beeinträchtigt werden. Durch inkrementelle Zusammenführungen werden parallele Vorgänge vorübergehend blockiert, UPDATE UPDATE und DELETE DELETE Operationen wiederum blockieren vorübergehend inkrementelle Zusammenführungsschritte in den betroffenen Tabellen. DDLOperationen, wie z. B. ALTERTABLE, werden blockiert, bis der Vakuumvorgang mit der Tabelle abgeschlossen ist.

Anmerkung

Verschiedene Modifikatoren zur VACUUM Steuerung der Funktionsweise. Sie können sie verwenden, um die Bereinigung an den aktuellen Bedarf anzupassen. Durch die Verwendung wird beispielsweise der Vakuumvorgang VACUUM RECLUSTER verkürzt, da kein vollständiger Zusammenführungsvorgang ausgeführt wird. Weitere Informationen finden Sie unter VACUUM.

Schwellenwert für die Bereinigung

Standardmäßig VACUUM überspringt die Sortierphase für jede Tabelle, in der mehr als 95 Prozent der Tabellenzeilen bereits sortiert sind. Das Überspringen der Sortierphase kann die Leistung erheblich verbessernVACUUM. Um den Standardschwellenwert für die Sortierung für eine einzelne Tabelle zu ändern, geben Sie den Tabellennamen und den PERCENTTO-Schwellenwertparameter an, wenn Sie den VACUUM Befehl ausführen.

Arten von Bereinigungen

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