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.
Löschvektoren sind ein Feature zur Speicheroptimierung, das Änderungen an Tabellen beschleunigt. Standardmäßig erfordert das Löschen einer einzelnen Zeile das Umschreiben der gesamten Parquet-Datei, die den entsprechenden Datensatz enthält. Löschvektoren vermeiden diesen Aufwand. Wenn Löschvektoren aktiviert sind, markieren die Operationen DELETE, UPDATE und MERGE die Zeilen und Vorgänge als geändert, ohne die Parquet-Datei neu zu schreiben. Liest dann den aktuellen Tabellenstatus auf, indem die in Löschvektoren aufgezeichneten Änderungen angewendet werden.
Databricks empfiehlt die Verwendung von Databricks Runtime 14.3 LTS und höher, um Tabellen mit Löschvektoren zu schreiben, um alle Optimierungen zu verwenden. Um Tabellen mit aktivierten Löschvektoren zu lesen, verwenden Sie Databricks Runtime 12.2 LTS und höher.
In Databricks Runtime 14.2 und höher unterstützen Tabellen mit Löschvektoren die Parallelität auf Zeilenebene. Siehe Zeilenebene-Konkurrenz.
Hinweis
Für prädiktive E/A-Updates verwendet Photon Löschvektoren, um DELETE, MERGE und UPDATE Vorgänge zu beschleunigen. Weitere Informationen finden Sie unter Verwenden von vorhersagender E/A zur Beschleunigung von Updatevorgängen.
Aktivieren von Löschvektoren
In den Arbeitsbereichseinstellungen können Sie Löschvektoren in neuen Tabellen aktivieren, wenn Sie ein SQL Warehouse oder Databricks Runtime 14.3 LTS oder höher verwenden. Die Standardeinstellungen variieren je nach Region. Weitere Informationen finden Sie unter "Automatische Aktivierung von Löschvektoren".
Löschvektoren sind nicht standardmäßig für materialisierte Ansichten und Streamingtabellen aktiviert, die im Hive-Metaspeicher gespeichert sind.
Verwenden Sie die enableDeletionVectors Tabelleneigenschaft, um die Unterstützung für Löschvektoren in einer beliebigen Tabelle oder Ansicht, einschließlich Streamingtabellen und materialisierten Ansichten, manuell zu aktivieren oder zu entfernen. So aktivieren Sie Löschvektoren in einer Tabelle, wenn Sie eine Tabelle erstellen oder ändern:
-- For Delta tables
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Sie können keine ALTER Anweisung verwenden, um Löschvektoren in einer materialisierten Ansicht oder Streamingtabelle zu aktivieren oder zu entfernen.
Verwenden Sie iceberg.enableDeletionVectors für Iceberg-Tabellen statt delta.enableDeletionVectors.
Warnung
Wenn Sie Löschvektoren aktivieren, aktualisiert Databricks das Tabellenprotokoll. Nach dem Upgrade können Clients ohne Vektorunterstützung für Löschvorgänge die Tabelle nicht lesen. Siehe Delta Lake Featurekompatibilität und Protokolle.
In Databricks Runtime 14.1 und höher können Sie das Tabellenfeature für Löschvektoren ablegen, um die Kompatibilität mit anderen Clients zu ermöglichen. Weitere Informationen finden Sie unter Löschen eines Delta Lake-Tabellenfeatures und Herabstufen des Tabellenprotokolls.
Änderungen auf Parquet-Datendateien anwenden
Löschvektoren kennzeichnen Änderungen an Zeilen als Softlöschungen, die die vorhandenen Parquet-Datendateien in der Tabelle logisch ändern. Diese Änderungen werden physisch angewendet, wenn eines der folgenden Ereignisse bewirkt, dass die Datendateien neu geschrieben werden:
- In der Tabelle wird ein
OPTIMIZE-Befehl ausgeführt. - Die automatische Verdichtung löst das Neuschreiben einer Datendatei mit einem Löschvektor aus.
-
REORG TABLE ... APPLY (PURGE)wird gegen die Tabelle ausgeführt.
Ereignisse im Zusammenhang mit der Dateikomprimierung bieten keine strengen Garantien für die Auflösung von Änderungen, die in Löschvektoren aufgezeichnet wurden. Einige änderungen, die in Löschvektoren aufgezeichnet wurden, werden möglicherweise nicht physisch angewendet, wenn Zieldatendateien nicht für die Dateikomprimierung geeignet sind.
REORG TABLE ... APPLY (PURGE) schreibt alle Datendateien neu, die Datensätze mit Änderungen enthalten, die mit Löschvektoren aufgezeichnet wurden. Siehe REORG TABLE.
Physisches Löschen alter Daten
Geänderte Daten sind möglicherweise noch in den alten Datendateien einer Tabelle nach einem Bereinigungsvorgang vorhanden. Möglicherweise möchten Sie die Daten physisch entfernen, z. B. um die Speicherkosten bei Ihrem Cloudanbieter zu reduzieren oder die DSGVO-Anforderungen einzuhalten.
Führen Sie den Befehl VACUUM aus, um die alten Dateien physisch zu löschen. Der REORG TABLE ... APPLY (PURGE) Vorgang erstellt eine neue Version der Tabelle, wenn sie abgeschlossen ist. Um gelöschte Dateien aus früheren Tabellenversionen vollständig zu entfernen, müssen Sie den Aufbewahrungsschwellenwert für VACUUM auf den Abschlusszeitstempel des Bereinigungsvorgangs festlegen. Weitere Informationen finden Sie unter Bereinigen von Nur-Metadaten-Löschvorgängen, um das Neuschreiben von Daten zu erzwingen.
Verbessern der Leistung für große Tabellen
Um die Leistung zu verbessern, wenn Sie soft-gelöschte Daten in großen Tabellen bereinigen, setzen Sie spark.databricks.delta.reorg.purgeMode auf rows. Legen Sie diese Konfiguration fest, wenn Sie Daten manuell mit REORG TABLE ... APPLY (PURGE) bereinigen oder wenn Sie Löschvektoren mittels ALTER TABLE DROP FEATURE deletionVectors entfernen.
spark.databricks.delta.reorg.purgeMode ist standardmäßig auf all festgelegt. Bei großen Tabellen kann dieser Vorgang langsam sein, da die Bereinigungsvorgänge alle Fußzeilen von Parquet-Dateien scannen müssen, um sowohl entfernte Spaltendaten als auch weich gelöschte Zeilen zu überprüfen.
Der rows Wert beschränkt den Vorgang so, dass nur Dateien mit vorläufig gelöschten Zeilen verarbeitet werden. In großen Tabellen kann dies die Leistung verbessern, wenn viele Dateien keine vorläufig gelöschten Zeilen enthalten und die Tabelle keine verworfenen Spalten enthält.
Clientkompatibilität
Azure Databricks verwendet Löschvektoren, um vorhersagende E/A für Updates auf Photon-fähige Rechenleistung zu ermöglichen. Weitere Informationen finden Sie unter Verwenden von vorhersagender E/A zur Beschleunigung von Updatevorgängen.
Die Unterstützung für die Verwendung von Löschvektoren für Lese- und Schreibvorgänge variiert je nach Client.
Die folgende Tabelle enthält erforderliche Clientversionen zum Lesen und Schreiben von Tabellen mit aktivierten Löschvektoren und gibt an, welche Schreibvorgänge Löschvektoren verwenden:
| Kunde | Schreibe Löschvektoren | Lösche-Vektoren lesen |
|---|---|---|
| Databricks Runtime mit Photon | Unterstützt MERGE, UPDATE und DELETE unter Verwendung von Databricks Runtime 12.2 LTS und höher. |
Erfordert Databricks Runtime 12.2 LTS oder höher. |
| Databricks Runtime ohne Photon | Unterstützt DELETE unter Verwendung von Databricks Runtime 12.2 LTS und höher. Unterstützt UPDATE unter Verwendung von Databricks Runtime 14.1 und höher. Unterstützt MERGE unter Verwendung von Databricks Runtime 14.3 LTS und höher. |
Erfordert Databricks Runtime 12.2 LTS oder höher. |
| OSS Apache Spark mit OSS Delta Lake | Unterstützung für DELETE mit OSS Delta 2.4.0 und höher. Unterstützt UPDATE mit OSS Delta 3.0.0 und höher. |
Erfordert OSS Delta 2.3.0 oder höher. |
| Delta Sharing-Empfänger | Schreibvorgänge werden für Delta-Freigabetabellen nicht unterstützt. | Databricks: Erfordert Databricks Runtime 14.1 oder höher. Open Source Apache Spark: Erfordert delta-sharing-spark 3.1 oder höher. |
Unterstützung für andere Clients finden Sie in der Dokumentation zu OSS Delta Lake-Integrationen.
Begrenzungen
- UniForm Iceberg v2 unterstützt keine Löschvektoren. Apache Iceberg v3 unterstützt Löschvektoren in Tabellen mit aktivierter UniForm. Siehe "Apache Iceberg v3-Features verwenden".
- Sie können keine GENERATE Anweisung verwenden, um eine Manifestdatei für eine Tabelle zu generieren, die Dateien mit Löschvektoren enthält. Um ein Manifest zu generieren, führen Sie zuerst eine REORG TABLE ... APPLY (PURGE)-Anweisung und führen Sie dann die
GENERATEAnweisung aus. Sie müssen sicherstellen, dass beim Übermitteln derREORGAnweisung keine gleichzeitigen Schreibvorgänge ausgeführt werden. - Sie können keine Manifestdateien für eine Tabelle mit aktivierten Löschvektoren (z. B. durch Festlegen der Tabelleneigenschaft
delta.compatibility.symlinkFormatManifest.enabled=true) inkrementell generieren. - Wenn Sie Löschvektoren für eine materialisierte Ansicht oder Streaming-Tabelle aktivieren und anschließend Löschvektoren entfernen, gelten Löschvektoren nicht für zukünftige Schreibvorgänge in die Ansicht oder Tabelle, aber vorhandene Löschvektoren bleiben bestehen.
- Sie können das Tabellenprotokoll nicht downgraden, nachdem Sie Löschvektoren für eine materialisierte Ansicht oder Streaming-Tabelle aktiviert haben. Nach dem Aktivieren kann das Tabellenfeature für Löschvektoren nicht entfernt werden, auch wenn Sie anschließend Löschvektoren in der Ansicht oder Tabelle deaktivieren.