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
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
-
VACUUM
erwartet, 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 dieVACUUM
Anweisung fehl und es wird die FehlermeldungGENERIC_ 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 ü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 eine Tabelle auszuführen
VACUUM
, 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ür
VACUUM
. DieINSERT INTO
AnweisungenCREATE
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.