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 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]

Wichtig

Das Aufbewahrungsfenster für den VAKUUM-Befehl 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 länger aufbewahren möchten (z. B. die Unterstützung der Zeitreise für längere Dauer), müssen Sie diese Tabelleneigenschaft auf einen höheren Wert festlegen. 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.

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.