VACUUM
Gilt für: Databricks SQL Databricks Runtime
Entfernen Sie nicht verwendete Dateien aus einem Tabellenverzeichnis.
Hinweis
Dieser Befehl funktioniert unterschiedlich, je nachdem, ob Sie mit einer Delta- oder Apache Spark-Tabelle arbeiten.
Bereinigen einer Delta-Tabelle
Bereinigen Sie Verzeichnisse rekursiv, die der Delta-Tabelle zugeordnet sind. Ausführliche Informationen und Einschränkungen finden Sie unter Entfernen nicht verwendeter Datendateien mit Vakuum.
VACUUM
entfernt alle Dateien aus dem Tabellenverzeichnis, die nicht von Delta verwaltet werden, sowie Datendateien, die sich nicht mehr im neuesten Stand des Transaktionsprotokolls für die Tabelle befinden und älter als ein Aufbewahrungsschwellenwert sind. VACUUM
überspringt alle Verzeichnisse, die mit einem Unterstrich (_
) beginnen, also auch das Verzeichnis _delta_log
. Die Partitionierung Ihrer Tabelle anhand einer Spalte, die mit einem Unterstrich beginnt, ist eine Ausnahme von dieser Regel. VACUUM
überprüft alle gültigen Partitionen, die in der Delta-Tabelle enthalten sind. Delta-Tabellendateien werden zu dem Zeitpunkt gelöscht, zu dem sie logisch aus dem Transaktionsprotokoll von Delta plus Aufbewahrungszeiten entfernt wurden, und nicht gemäß ihrem Änderungszeitstempel im Speichersystem. Der Standardschwellenwert ist 7 Tage.
Bei Delta-Tabellen löst Azure Databricks nicht automatisch VACUUM
-Vorgänge aus.
Wenn Sie VACUUM
auf eine Delta-Tabelle anwenden, verlieren Sie die Möglichkeit der Zeitreise zurück zu einer Version, die älter als der angegebene Datenaufbewahrungszeitraum ist.
Warnung
Es wird empfohlen, ein Aufbewahrungsintervall von mindestens 7 Tagen festzulegen, da alte Momentaufnahmen und nicht übergebene Dateien von gleichzeitigen Lesern oder Schreibern für die Tabelle weiterhin verwendet werden können. Wenn VACUUM
aktive Dateien bereinigt, können gleichzeitige Reader fehlschlagen oder – noch schlimmer – Tabellen beschädigt werden, wenn VACUUM
Dateien löscht, die noch nicht committet wurden. Sie müssen ein Intervall auswählen, das länger ist als die am längsten ausgeführte gleichzeitige Transaktion und der längste Zeitraum, den ein Stream hinter dem neuesten Update der Tabelle zurückbleiben kann.
Bei Delta Lake gibt es eine Sicherheitsüberprüfung, um zu verhindern, dass Sie einen gefährlichen VACUUM
-Befehl ausführen. In Databricks Runtime gilt: Wenn Sie sicher sind, dass für diese Tabelle keine Vorgänge ausgeführt werden, die länger dauern als das Aufbewahrungsintervall, das Sie angeben möchten, können Sie diese Sicherheitsüberprüfung deaktivieren, indem Sie die Spark-Konfigurationseigenschaft spark.databricks.delta.retentionDurationCheck.enabled
auf false
festlegen.
VACUUM table_name [RETAIN num HOURS] [DRY RUN]
Parameter
-
Identifiziert eine vorhandene Delta-Tabelle. Der Name darf keine temporale Spezifikation enthalten.
RETAIN num HOURS
Der Aufbewahrungsschwellenwert.
DRY RUN
Gibt eine Liste von bis zu 1000 der zu löschenden Dateien zurück.
Bereinigen einer Nicht-Delta-Tabelle
Bereinigt rekursiv Verzeichnisse, die der Nicht-Delta-Tabelle zugeordnet sind, und entfernt nicht committete Dateien, die älter als ein Aufbewahrungsschwellenwert sind. Der Standardschwellenwert ist 7 Tage.
Bei Nicht-Delta-Tabellen löst Azure Databricks automatisch VACUUM
-Vorgänge aus, wenn Daten geschrieben werden.
Syntax
VACUUM table_name [RETAIN num HOURS]
Parameter
-
Gibt eine vorhandene Tabelle anhand des Namens oder Pfads an.
RETAIN num HOURS
Der Aufbewahrungsschwellenwert.