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.
Entfernen Sie Datendateien, auf die nicht mehr von einer Tabelle verwiesen wird, die älter als der Aufbewahrungsschwellenwert ist, indem Sie den VACUUM Befehl in der Tabelle ausführen. Die regelmäßige Ausführung von VACUUM ist aus Kosten- und Compliancegründen wichtig aufgrund der folgenden Überlegungen:
- Das Löschen nicht verwendeter Datendateien reduziert die Cloudspeicherkosten.
- Durch
VACUUMentfernte Datendateien können Datensätze enthalten, die geändert oder gelöscht wurden. Durch das dauerhafte Entfernen dieser Dateien aus dem Cloudspeicher wird sichergestellt, dass auf diese Datensätze nicht mehr zugegriffen werden kann.
Die Predictive Optimization führt automatisch VACUUM in verwalteten Tabellen in Unity Catalog aus. Databricks empfiehlt die Aktivierung von prädiktiven Optimierungen für alle verwalteten Tabellen in Unity Catalog, um die Datenwartung zu vereinfachen und die Speicherkosten zu senken. Siehe Prädiktive Optimierung für verwaltete Unity Catalog-Tabellen.
Vorbehalte für Vakuum
Der Standardaufbewahrungsschwellenwert für Datendateien nach Ausführung von VACUUM beträgt 7 Tage. Informationen zum Ändern dieses Verhaltens finden Sie unter Konfigurieren der Datenaufbewahrung für Zeitreise-Abfragen.
Leere Verzeichnisse könnten nach der Entfernung aller darin enthaltenen Dateien durch VACUUM zurückbleiben. Nachfolgende VACUUM-Vorgänge löschen diese leeren Verzeichnisse.
Einige Tabellenfunktionen, wie z. B. Löschvektoren, verwenden Metadatendateien, um Daten als gelöscht zu markieren, statt Datendateien neu zu schreiben. Verwenden Sie REORG TABLE ... APPLY (PURGE), um diese Löschungen auszuführen und Datendateien neu zu schreiben. Weitere Informationen finden Sie unter Bereinigen von Nur-Metadaten-Löschvorgängen, um das Neuschreiben von Daten zu erzwingen.
Important
- In Databricks Runtime 13.3 LTS und höher
VACUUMunterscheiden sich die Semantik für flache Klonen mit verwalteten Unity-Katalog-Tabellen von anderen Tabellen. Siehe "VerwendenVACUUMmit Flachklonen im Unity-Katalog". -
VACUUMentfernt alle Dateien aus Verzeichnissen, die nicht von Azure Databricks verwaltet werden, wobei Verzeichnisse ignoriert werden, die mit_oder.beginnen. Wenn Sie zusätzliche Metadaten wie strukturierte Streaming Checkpoints in einem Tabellenverzeichnis speichern, verwenden Sie einen Verzeichnisnamen wie_checkpoints.- Daten für den Änderungsdaten-Feed werden im
_change_dataVerzeichnis verwaltet und mitVACUUMentfernt. Weitere Informationen finden Sie unter Verwenden des Änderungsdatenfeeds auf Azure Databricks. - Bloom-Filterindizes (veraltet) verwenden das
_delta_indexVerzeichnis.VACUUMbereinigt Dateien in diesem Verzeichnis. Siehe Bloom-Filterindizes (veraltet).
- Daten für den Änderungsdaten-Feed werden im
- Die Möglichkeit, Tabellenversionen abzufragen, die älter als der Aufbewahrungszeitraum sind, geht nach der Ausführung von
VACUUMverloren. - Protokolldateien werden nach Prüfpunktvorgängen automatisch und asynchron gelöscht und werden nicht durch
VACUUMgesteuert. Während der Standardaufbewahrungszeitraum von Protokolldateien 30 Tage beträgt, werden bei der Ausführung vonVACUUMbei einer Tabelle die für Zeitreisen erforderlichen Datendateien entfernt. - Wenn Datenträgercaching aktiviert ist, könnte ein Cluster Daten aus Parquet-Dateien enthalten, die mit
VACUUMgelöscht wurden. Deshalb kann es möglich sein, die Daten früherer Tabellenversionen abzufragen, deren Dateien gelöscht wurden. Durch einen Neustart des Clusters werden die zwischengespeicherten Daten entfernt. Siehe Konfigurieren des Datenträgercaches.
Beispielsyntax für VACUUM
Um Dateien zu entfernen, die von Versionen, die älter als der Standardaufbewahrungszeitraum sind, nicht mehr benötigt werden, führen Sie VACUUM ohne zusätzliche Konfiguration aus:
VACUUM table_name
Um eine Vorschau der Liste der zu löschenden Dateien anzuzeigen, ohne sie zu entfernen, führen Sie Folgendes aus VACUUMDRY RUN:
VACUUM table_name DRY RUN
Details zur Spark SQL-Syntax finden Sie unter VACUUM.
Details zur Syntax von Scala, Java und Python finden Sie in der Dokumentation zur Delta Lake-API.
Hinweis
Verwenden Sie in Databricks Runtime 18.0 und höher die deletedFileRetentionDuration Tabelleneigenschaft, um die Aufbewahrung zu steuern. Für verwaltete Tabellen im Unity-Katalog gilt dies für Databricks Runtime 13.3 LTS und höher.
Siehe Konfigurieren der Datenaufbewahrung für Zeitreiseabfragen.
Voll- und Lite-Modus
Important
Dieses Feature befindet sich in der öffentlichen Vorschau in Databricks Runtime 16.4 LTS und höher.
Um die Leistung zu verbessern und Kosten zu senken, indem Sie nicht alle Dateien im Tabellenverzeichnis auflisten, geben Sie das LITE Schlüsselwort in Ihrer Vakuum-Anweisung an, um einen alternativen Modus von VACUUMauszulösen. Dies ist nützlich für große Tabellen, die häufige VACUUM Vorgänge erfordern.
LITE im Modus wird das Transaktionsprotokoll verwendet, um Datendateien zu identifizieren, die sich nicht mehr innerhalb des VACUUM Aufbewahrungsschwellenwerts befinden, und entfernt diese Datendateien aus der Tabelle.
Hinweis
Das Ausführen von VACUUM im LITE Modus löscht keine Dateien, auf die im Transaktionsprotokoll nicht verwiesen wird. Beispielsweise Dateien, die von einer abgebrochenen Transaktion erstellt wurden.
Verwenden Sie die folgende Syntax, um VACUUM im LITE-Modus auszuführen.
VACUUM table_name LITE
FULL der Modus ist die Standardeinstellung für Vakuum. Sie können den vollständigen Modus explizit mit dem folgenden Befehl ausführen:
VACUUM table_name FULL
Siehe VACUUM.
Requirements
LITE der Modus hat die folgende Anforderung:
- Sie müssen mindestens einen erfolgreichen
VACUUMVorgang innerhalb des konfigurierten Aufbewahrungsschwellenwerts für Transaktionsprotokolle (standardmäßig 30 Tage) ausgeführt haben.
Wenn diese Anforderung nicht erfüllt ist, wird beim Ausführen VACUUM im LITE Modus die folgende Fehlermeldung angezeigt. Um fortzufahren, müssen Sie VACUUM im FULL-Modus ausführen.
VACUUM <tableName> LITE cannot delete all eligible files as some files are not referenced by the log. Please run VACUUM FULL.
Metadaten-nur-Löschungen durchführen, um das Neuschreiben von Daten zu erzwingen
Mit dem Befehl REORG TABLE und der Syntax APPLY (PURGE) können Sie Daten neu schreiben, um weiche Löschungen anzuwenden. Vorläufige Löschvorgänge schreiben keine Daten neu oder löschen keine Datendateien, sondern verwenden Metadatendateien, um anzugeben, dass sich einige Datenwerte geändert haben. Siehe REORG TABLE.
Vorgänge zum Erstellen von vorläufigen Löschungen umfassen Folgendes:
- Entfernen von Spalten mit aktivierter Spaltenzuordnung.
- Alle Datenänderungen mit aktivierten Löschvektoren.
Bei aktivierten Vorläufiglöschungen bleiben alte Daten möglicherweise physisch in den aktuellen Dateien der Tabelle vorhanden, auch nachdem die Daten gelöscht oder aktualisiert wurden. Führen Sie die folgenden Schritte aus, um diese Daten physisch aus der Tabelle zu entfernen:
- Führen Sie
REORG TABLE ... APPLY (PURGE)aus. Danach sind die alten Daten nicht mehr in den aktuellen Dateien der Tabelle vorhanden, sind aber weiterhin in den älteren Dateien vorhanden, die für Zeitreisen verwendet werden. - Führen Sie
VACUUMaus, um diese älteren Dateien zu löschen.
REORG TABLE erstellt nach Abschluss des Vorgangs eine neue Version der Tabelle. Alle Tabellenversionen im Verlauf vor dieser Transaktion beziehen sich auf ältere Datendateien. Konzeptionell ähnelt dies dem OPTIMIZE-Befehl, bei dem Datendateien neu geschrieben werden, obwohl die Daten in der aktuellen Tabellenversion konsistent bleiben.
Important
Datendateien werden nur gelöscht, wenn die Dateien gemäß dem abgelaufen sind VACUUM-Aufbewahrungszeitraum. Dies bedeutet, dass VACUUM mit einer Verzögerung nach dem REORG erfolgen muss, um sicherzustellen, dass die älteren Dateien abgelaufen sind. Der Aufbewahrungszeitraum von VACUUM kann reduziert werden, um die erforderliche Wartezeit zu verkürzen, was jedoch mit einer Verkürzung des maximalen aufbewahrten Zeitreiseverlaufs einhergeht.
Empfehlungen für Clustergrößen für Vakuum
Um die richtige Clustergröße auszuwählen VACUUM, berücksichtigen Sie, dass der Vorgang in zwei Phasen erfolgt:
- Die Aufgabe beginnt mit der Verwendung aller verfügbaren Executorknoten zum parallelen Auflisten der Dateien im Quellverzeichnis. Der Job vergleicht diese Liste mit allen Dateien, die derzeit im Transaktionsprotokoll referenziert sind, um die zu löschenden Dateien zu identifizieren. Der Treiber befindet sich in dieser Zeit im Leerlauf.
- Der Treiber gibt Löschbefehle für jede datei aus, die zum Löschen identifiziert wurde. Da das Löschen von Dateien ein Vorgang ist, der nur auf dem Treiberknoten ausgeführt wird, werden alle Vorgänge auf einem einzigen Knoten ausgeführt, während die Worker-Knoten im Leerlauf bleiben.
Um Kosten und Leistung zu optimieren, empfiehlt Databricks Folgendes, insbesondere bei zeitintensiven VACUUM-Aufträgen:
- Führen Sie VACUUM auf einem Cluster aus, für den die automatische Skalierung für 1 bis 4 Worker festgelegt ist und jeder Worker über 8 Kerne verfügt.
- Wählen Sie einen Treiber mit 8 bis 32 Kernen aus. Erhöhen Sie die Größe des Treibers, um OOM-Fehler (Out-of-Memory-Fehler) zu vermeiden.
Wenn VACUUM-Vorgänge regelmäßig mehr als 10 000 Dateien löschen oder mehr als 30 Minuten Verarbeitungszeit in Anspruch nehmen, sollten Sie entweder die Größe des Treibers oder die Anzahl der Worker erhöhen.
Wenn Sie feststellen, dass die Verlangsamung während dem Identifizieren der zu entfernenden Dateien auftritt, fügen Sie weitere Workerknoten hinzu. Wenn die Verlangsamung auftritt, während Löschbefehle ausgeführt werden, versuchen Sie, die Größe des Treibers zu erhöhen.
Empfohlene Vakuumfrequenz
Databricks empfiehlt, VACUUM regelmäßig für alle Tabellen auszuführen, um die Kosten für Clouddatenspeicher zu reduzieren. Der Standardaufbewahrungszeitraum für das Vacuum beträgt 7 Tage. Wenn Sie einen höheren Schwellenwert festlegen, erhalten Sie Zugriff auf einen größeren Verlauf für Ihre Tabelle, erhöht aber die Anzahl der gespeicherten Datendateien und erhöht dadurch die Speicherkosten ihres Cloudanbieters.
Vakuum- und niedrige Aufbewahrungsschwellenwerte
Warnung
Databricks empfiehlt dringend, ein Aufbewahrungsintervall von mindestens 7 Tagen festzulegen. Wenn Sie Aufträge haben, die mehrere Tage laufen, können lang andauernde Aufträge Dateien schreiben, die noch nicht finalisiert sind. Wenn Der Aufbewahrungszeitraum zu kurz ist, könnten diese nicht gesendeten Dateien gelöscht werden, VACUUM bevor der Auftrag abgeschlossen ist.
Es gibt eine Sicherheitsüberprüfung, um zu verhindern, dass Sie einen gefährlichen VACUUM Befehl ausführen. Wenn Sie sicher sind, dass in dieser Tabelle keine Vorgänge ausgeführt werden, die länger als das aufbewahrungsintervall dauern, das Sie angeben möchten, deaktivieren Sie diese Sicherheitsüberprüfung, indem Sie die retentionDurationCheck Spark-Konfiguration auf falsefolgendes festlegen:
Delta
SET spark.databricks.delta.retentionDurationCheck.enabled = false
Iceberg
SET spark.databricks.iceberg.retentionDurationCheck.enabled = false
Überwachungsinformationen
VACUUM protokolliert Audit-Informationen im Transaktionsprotokoll. Abfragen der Überwachungsereignisse mithilfe von DESCRIBE HISTORY.
Standardmäßig ist die Überwachungsprotokollierung auf allen Plattformen für verwaltete Tabellen im Unity-Katalog aktiviert. Steuern der Vakuumüberwachungsprotokollierung mit der vacuum.logging Spark-Konfiguration:
Delta
SET spark.databricks.delta.vacuum.logging.enabled = true
Iceberg
SET spark.databricks.iceberg.vacuum.logging.enabled = true
Um diese Konfiguration für einen gesamten Arbeitsbereich auf alle Cluster anzuwenden, verwenden Sie eine Clusterrichtlinie, und fügen Sie der Richtlinien-JSON Folgendes hinzu:
Delta
{
"spark_conf.spark.databricks.delta.vacuum.logging.enabled": {
"type": "fixed",
"value": "true"
}
}
Iceberg
{
"spark_conf.spark.databricks.iceberg.vacuum.logging.enabled": {
"type": "fixed",
"value": "true"
}
}
Siehe Erstellen und Verwalten von Berechnungsrichtlinien.
Hinweis
Die Überwachungsprotokollierung ist auch standardmäßig für externe Tabellen aktiviert.