Teilen ü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 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 { { 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.

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');

Parameter

  • table_name

    Identifiziert eine vorhandene Delta-Tabelle. Der Name darf keine zeitliche Spezifikation oder Optionsspezifikation enthalten.

  • RETAIN num HOURS

    Der Aufbewahrungsschwellenwert.

  • 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 Databricks SQL mit Häkchen 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.

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

  • table_name

    Gibt eine vorhandene Tabelle anhand des Namens oder Pfads an.

  • RETAIN num HOURS

    Der Aufbewahrungsschwellenwert.