VACUUM
Die VACUUM-Anweisung führt Wartung von Apache-Iceberg-Tabellen durch, indem sie das Ablaufen von Snapshots
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
-
VACUUMerwartet, dass sich die Iceberg-Daten in einem Amazon-S3-Ordner und nicht in einem Amazon-S3-Bucket befinden. Wenn sich Ihre Iceberg-Daten beispielsweise aufs3://amzn-s3-demo-bucket/ statt aufs3://amzn-s3-demo-bucket/myicebergfolder/befinden, schlägt dieVACUUM-Anweisung mit der FehlermeldungGENERIC_INTERNAL_ERROR: Pfad fehlt im Dateisystem:fehl.s3://amzn-s3-demo-bucket -
Damit
VACUUMDatendateien löschen kann, muss Ihre Rolle zur Abfrageausführung übers3: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 dieVACUUM-Abfrage erfolgreich, aber die Dateien werden nicht gelöscht. -
Um
VACUUMauf 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. DieCREATEundINSERT 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.