VACUUM - Amazon Athena

VACUUM

Die VACUUM-Anweisung führt Wartung von Apache-Iceberg-Tabellen durch, indem sie das Ablaufen von Snapshots und 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 Iceberg-Tabellen optimieren. Beachten Sie, dass für die damit verbundenen Anfragen an Amazon S3 Gebühren anfallen, da die VACUUM-Anweisung API-Aufrufe an Amazon S3 tätigt.

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
  • VACUUM erwartet, dass sich die Iceberg-Daten in einem Amazon-S3-Ordner und nicht in einem Amazon-S3-Bucket befinden. Wenn sich Ihre Iceberg-Daten beispielsweise auf s3://amzn-s3-demo-bucket/ statt auf s3://amzn-s3-demo-bucket/myicebergfolder/ befinden, schlägt die VACUUM-Anweisung mit der Fehlermeldung GENERIC_INTERNAL_ERROR: Pfad fehlt im Dateisystem: s3://amzn-s3-demo-bucket fehl.

  • Damit VACUUM Datendateien löschen kann, 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 VACUUM auf eine Tabelle auszuführen, deren Name mit einem Unterstrich beginnt (z. B. _mytable), schließen Sie den Tabellennamen in umgekehrte Anführungszeichen ein, wie im folgenden Beispiel. Wenn Sie dem Tabellennamen einen Datenbanknamen voranstellen, schließen Sie den Datenbanknamen nicht in umgekehrte Anführungszeichen ein. Beachten Sie, dass doppelte Anführungszeichen nicht anstelle von umgekehrte Anführungszeichen funktionieren.

    Dieses Verhalten ist spezifisch für VACUUM. Die CREATE und INSERT INTO-Anweisungen erfordern keine umgekehrte Anführungszeichen 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.