Optimieren von Iceberg-Tabellen - Amazon Athena

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.

Optimieren von Iceberg-Tabellen

Wenn sich Daten in einer Iceberg-Tabelle ansammeln, werden Abfragen aufgrund der erhöhten Bearbeitungszeit, die zum Öffnen von Dateien erforderlich ist, allmählich weniger effizient. Zusätzliche Rechenkosten fallen an, wenn die Tabelle Dateien löschen enthält. In Iceberg speichern Löschdateien Löschvorgänge auf Zeilenebene, und die Engine muss die gelöschten Zeilen auf Abfrageergebnisse anwenden.

Um die Leistung von Abfragen auf Iceberg-Tabellen zu optimieren, unterstützt Athena die manuelle Verdichtung als Tabellenwartungsbefehl. Verdichtungen optimieren das strukturelle Layout der Tabelle, ohne den Tabelleninhalt zu ändern.

OPTIMIZE

Die OPTIMIZE table REWRITE DATA-Verdichtungsaktion schreibt Datendateien basierend auf ihrer Größe und Anzahl der zugehörigen Löschdateien in ein optimierteres Layout um. Einzelheiten zur Syntax und Tabelleneigenschaften finden Sie unter OPTIMIZE.

Beispiel

Im folgenden Beispiel werden Löschdateien in Datendateien zusammengeführt und Dateien in der Nähe der Zieldateigröße erstellt, bei denen der Wert von category c1 ist.

OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK WHERE category = 'c1'

VACUUM

VACUUM führt den Snapshot-Ablauf und das Entfernen verwaister Dateien durch. Diese Aktionen reduzieren die Größe der Metadaten und entfernen Dateien, die sich nicht im aktuellen Tabellenstatus befinden und zudem älter als die für die Tabelle angegebene Aufbewahrungsfrist sind. Einzelheiten zur Syntax finden Sie unter VACUUM.

Beispiel

Im folgenden Beispiel wird eine Tabelleneigenschaft verwendet, um die Tabelle iceberg_table so zu konfigurieren, dass die Daten der letzten drei Tage beibehalten werden. Anschließend verwendet es VACUUM, um die alten Snapshots ablaufen zu lassen und die verwaisten Dateien aus der Tabelle zu entfernen.

ALTER TABLE iceberg_table SET TBLPROPERTIES ( 'vacuum_max_snapshot_age_seconds'='259200' ) VACUUM iceberg_table