Freigeben über


VACUUM

Gilt für:durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert 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 eine RETAIN 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 HOURSDRY RUN in der Syntax vorausgehen.

Parameter

  • table_name

    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.deletedFileRetentionDurationwird, wird der Aufbewahrungszeitraum der Tabelle verwendet.

  • DRY RUN

    Gibt eine Liste von bis zu 1000 der zu löschenden Dateien zurück.

  • FULL oder LITE

    Gilt für:mit Häkchen markiert ja Databricks SQL mit Häkchen markiert ja 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, verwendet VACUUM das Delta-Transaktionsprotokoll, um Dateien zu identifizieren und zu entfernen, auf die nicht mehr innerhalb der Aufbewahrungsdauer von Tabellenversionen verwiesen wird. Wenn VACUUM 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

  • table_name

    Gibt eine vorhandene Tabelle anhand des Namens oder Pfads an.

  • RETAIN num HOURS

    Der Aufbewahrungsschwellenwert.