Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: Databricks SQL
Databricks Runtime
Entfernen Sie nicht verwendete Dateien aus einem Tabellenverzeichnis.
Hinweis
Dieser Befehl funktioniert je nachdem, ob Sie an einer Delta-, Apache Spark- oder Apache Iceberg-Tabelle arbeiten.
Vakuumieren einer Delta-Tabelle
Rekursives Leeren von Verzeichnissen, 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
durchsucht alle gültigen Partitionen, die in der Ziel-Delta-Tabelle enthalten sind. Delta-Tabellendatendateien werden entsprechend dem Zeitpunkt gelöscht, zu dem sie logisch aus dem Transaktionsprotokoll von Delta entfernt wurden, plus Aufbewahrungszeiten, nicht deren Änderungszeitstempel auf dem Speichersystem. Der Standardschwellenwert ist 7 Tage.
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.
Wenn die Vorhersageoptimierung aktiviert ist, löst Azure Databricks den VACUUM
Vorgang automatisch als Teil des Optimierungsprozesses aus. In den meisten Fällen müssen Sie VACUUM
nicht manuell ausführen.
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.
Ein Apache-Eisberg-Tabelle leeren
Entfernt rekursiv nicht referenzierte Dateien aus den Verzeichnissen, die der Apache Iceberg-Tabelle zugeordnet sind.
- Nur
VACUUM
ohne eineRETAIN
Klausel wird für Eisberg-Tabellen unterstützt. - Der Aufbewahrungszeitraum ist auf 7 Tage festgelegt.
Wenn die Vorhersageoptimierung aktiviert ist, löst Azure Databricks den VACUUM
Vorgang automatisch als Teil des Optimierungsprozesses aus. In den meisten Fällen müssen Sie VACUUM
nicht manuell ausführen.
Syntax
VACUUM table_name { { FULL | LITE } | RETAIN num HOURS | DRY RUN } [...]
In Databricks Runtime 16.0 und früheren Versionen muss RETAIN num HOURS
DRY RUN
in der Syntax vorausgehen.
Parameter
-
Identifiziert eine vorhandene Delta-Tabelle. Der Name darf keine zeitliche Spezifikation oder Optionsspezifikation enthalten.
RETAIN num HOURS
Der Aufbewahrungsschwellenwert. Wenn der angegebene Aufbewahrungszeitraum überschritten
delta.deletedFileRetentionDuration
wird, wird der Aufbewahrungszeitraum der Tabelle verwendet.DRY RUN
Gibt eine Liste von bis zu 1000 der zu löschenden Dateien zurück.
FULL
oderLITE
Gilt für:
Databricks SQL
Databricks Runtime 16.1 und höher
FULL
führt den Vakuumbetrieb im Modus Voll aus. Dadurch werden Datendateien außerhalb der Aufbewahrungsdauer gelöscht, und alle Dateien im Tabellenverzeichnis, auf die nicht von der Tabelle verwiesen wird.LITE
führt den Vakuumbetrieb im Lite Modus aus. Anstatt alle Dateien im Tabellenverzeichnis zu finden, verwendetVACUUM
das Delta-Transaktionsprotokoll, um Dateien zu identifizieren und zu entfernen, auf die nicht mehr innerhalb der Aufbewahrungsdauer von Tabellenversionen verwiesen wird. WennVACUUM LITE
nicht abgeschlossen werden kann, weil das Delta-Protokoll bereinigt wurde, wird eine DELTA_CANNOT_VACUUM_LITE-Ausnahme ausgelöst.Der Standardwert lautet
FULL
.
Wichtig
Das Aufbewahrungsfenster für den Befehl VACUUM
wird durch die delta.deletedFileRetentionDuration
Tabelleneigenschaft bestimmt, die standardmäßig 7 Tage beträgt.
Dies bedeutet, dass VACUUM
Datendateien entfernt, auf die in den letzten sieben Tagen nicht mehr von einer Deltatabellenversion verwiesen wurde.
Wenn Sie Daten für einen längeren Zeitraum aufbewahren möchten, z. B. um die Zeitreise für längere Dauer zu unterstützen, legen Sie diese Tabelleneigenschaft auf einen höheren Wert fest.
Das folgende Beispiel zeigt das Festlegen dieses Schwellenwerts auf 30 Tage:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
Andere Tabellen vakuumieren
Rekursives Entfernen von Dateien in Verzeichnissen, die mit nicht-Delta- und nicht-Eisberg-Tabellen zugeordnet sind, wobei nicht commitfähige Dateien entfernt werden, die älter als ein Aufbewahrungsschwellenwert sind. Der Standardschwellenwert ist 7 Tage.
Auf diesen Tabellen löst Azure Databricks automatisch VACUUM
-Operationen aus, während 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.