VACUUM - 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.

VACUUM

Die VACUUM Anweisung führt die Tabellenverwaltung für Apache Iceberg-Tabellen durch, indem sie das Ablaufen von Snapshots und das Entfernen verwaister Dateien durchführt.

Anmerkung

VACUUM ist transaktionsbasiert und wird nur für Apache-Iceberg-Tabellen in Athena-Engine-Version 3 unterstützt.

Die VACUUM Anweisung optimiert Iceberg-Tabellen, indem sie den Speicherverbrauch reduziert. Weitere Informationen zur Verwendung von VACUUM finden Sie unter Optimieren Sie Iceberg-Tabellen. Beachten Sie, dass für die entsprechenden Anfragen an Amazon S3 Gebühren anfallen, da mit dem VACUUM Kontoauszug API Anrufe an Amazon S3 getätigt werden.

Warnung

Wenn Sie einen Snapshot-Ablauf ausführen, können Sie nicht mehr zu abgelaufenen Snapshots reisen.

Syntax

Verwenden Sie die folgende Syntax, um Datendateien zu entfernen, die für eine Iceberg-Tabelle nicht mehr benötigt werden.

VACUUM [database_name.]target_table
  • VACUUMerwartet, dass sich die Iceberg-Daten in einem Amazon S3 S3-Ordner und nicht in einem Amazon S3 S3-Bucket befinden. Wenn sich Ihre Iceberg-Daten beispielsweise beis3://amzn-s3-demo-bucket/statt bei befindens3://amzn-s3-demo-bucket/myicebergfolder/, schlägt die VACUUM Anweisung fehl und es wird die Fehlermeldung GENERIC_ INTERNAL _ERROR: Pfad fehlt im Dateisystemverzeichnis: angezeigt. s3://amzn-s3-demo-bucket

  • Damit VACUUM Sie Datendateien löschen können, muss Ihre Rolle zur Abfrageausführung über s3:DeleteObject Berechtigungen für den Bucket verfügen, in dem sich Ihre Iceberg-Tabellen, Metadaten, Snapshots und Datendateien befinden. Wenn die Berechtigung nicht vorhanden ist, ist die VACUUM Abfrage erfolgreich, aber die Dateien werden nicht gelöscht.

  • Um eine Tabelle auszuführenVACUUM, deren Name mit einem Unterstrich beginnt (z. B._mytable), schließen Sie den Tabellennamen wie im folgenden Beispiel in Backticks ein. Wenn Sie dem Tabellennamen einen Datenbanknamen voranstellen, schließen Sie den Datenbanknamen nicht in Backticks ein. Beachten Sie, dass doppelte Anführungszeichen nicht anstelle von Backticks funktionieren.

    Dieses Verhalten ist spezifisch fürVACUUM. Die INSERT INTO Anweisungen CREATE und erfordern keine Backticks für Tabellennamen, die mit Unterstrichen beginnen.

    VACUUM `_mytable` VACUUM my_database.`_mytable`

Durchgeführte Operationen

VACUUM führt die folgenden Operationen aus:

  • Entfernt Snapshots, die älter sind als die durch die vacuum_max_snapshot_age_seconds-Tabelleneigenschaft angegebene Zeitdauer. Standardmäßig ist diese Eigenschaft auf 432 000 Sekunden (5 Tage) festgelegt.

  • Entfernt Snapshots, die nicht innerhalb des Aufbewahrungszeitraums liegen und die die in der vacuum_min_snapshots_to_keep-Tabelleneigenschaft angegebene Anzahl überschreiten. Der Standardwert ist 1.

    Sie können diese Tabelleneigenschaften in Ihrer CREATE TABLE-Anweisung angeben. Nachdem die Tabelle erstellt wurde, können Sie diese mit der ALTER TABLE SET TBLPROPERTIES-Anweisung aktualisieren.

  • Entfernt alle Metadaten und Datendateien, die aufgrund des Entfernens des Snapshots nicht mehr erreichbar sind. Sie können die Anzahl der alten Metadatendateien, die beibehalten werden sollen, konfigurieren, indem Sie die vacuum_max_metadata_files_to_keep-Tabelleneigenschaft festlegen. Der Standardwert lautet 100.

  • Entfernt verwaiste Dateien, die älter sind als die in der vacuum_max_snapshot_age_seconds-Tabelleneigenschaft angegebene Zeit. Verwaiste Dateien sind Dateien im Datenverzeichnis der Tabelle, die nicht mehr Teil des Tabellenstatus sind.

Weitere Informationen zur Erstellung und Verwaltung von Apache-Iceberg-Tabellen in Athena finden Sie unter Iceberg-Tabellen erstellen und Iceberg-Tabellen verwalten.