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 beschleunigen DELETE, UPDATEund MERGE Vorgänge auf Delta Lake- und Apache Iceberg-Tabellen. Ohne Löschvektoren erfordert das Ändern einer einzelnen Zeile das Neuschreiben der gesamten Parquet-Datei, die diesen Datensatz enthält. Löschvektoren markieren stattdessen Zeilen in den Metadaten als geändert, und Lesevorgänge wenden die Einträge der Löschvektoren zur Abfragezeit an, um den aktuellen Tabellenstatus zu ermitteln.
Note
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.
Prerequisites
Alle Apache Iceberg v3-Tabellen enthalten standardmäßig Löschvektoren. Siehe "Apache Iceberg v3-Features verwenden". Für Delta Lake-Tabellen müssen Sie Löschvektoren explizit aktivieren.
Wenn Sie Tabellen mit Löschvektoren mit allen Optimierungen schreiben möchten, verwenden Sie Databricks Runtime 14.3 LTS und höher. Um sie 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.
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.
In der folgenden Tabelle sind Clientversionen aufgeführt, die zum Lesen und Schreiben von Vektortabellen zum Löschen erforderlich sind:
| Client | 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. |
| OpenSharing-Empfänger | Schreibvorgänge werden in OpenSharing-Tabellen nicht unterstützt. | Azure 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.
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.
Zum manuellen Aktivieren oder Entfernen von Löschvektoren in einer beliebigen Tabelle oder Ansicht verwenden Sie die enableDeletionVectors Tabelleneigenschaft.
So aktivieren Sie Löschvektoren in einer Tabelle, wenn Sie eine Tabelle erstellen oder ändern:
Delta Lake
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Eisbergtisch
CREATE TABLE <table-name> [options] TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
Sie können keine ALTER Anweisung verwenden, um Löschvektoren in einer materialisierten Ansicht oder Streamingtabelle zu aktivieren oder zu entfernen. Sie müssen eine CREATE TABLE Anweisung verwenden.
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.
Vorläufige Löschungen auf Datendateien anwenden
Löschvektoren kennzeichnen Änderungen an Zeilen als logische Löschungen, die vorhandene Parquet-Datendateien in der Tabelle logisch verändern. Um die Parquet-Datendateien physisch neu zu schreiben, führen Sie einen der folgenden Schritte aus:
- Führen Sie
OPTIMIZEin der Tabelle aus. - Führen Sie
REORG TABLE ... APPLY (PURGE)für die Tabelle aus. Mit diesem Befehl werden alle Datendateien neu geschrieben, die Datensätze mit Änderungen an Löschvektoren enthalten. Siehe REORG TABLE. - Führen Sie einen Schreibvorgang mit automatischer Komprimierung aus, wodurch eine Neuschreibung einer Datendatei mit einem Löschvektor ausgelöst wird.
Dateikomprimierungsereignisse haben 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.
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.
So löschen Sie alte Daten physisch:
- Führen Sie
REORG TABLE ... APPLY (PURGE)aus. - Führen Sie
VACUUMaus, wobei der Aufbewahrungsschwellenwert auf den Zeitstempel des Abschlusses des Löschvorgangs festgelegt ist, um Dateien aus vorherigen Tabellenversionen physisch zu entfernen. 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 von Bereinigungsvorgängen bei großen Tabellen zu verbessern, 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.
Limitations
- 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 überprüfen, ob 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.
- Sie können keine Manifestdateien für eine Tabelle mit aktivierten Löschvektoren (z. B. durch Festlegen der Tabelleneigenschaft
- 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 nach dem Aktivieren von Löschvektoren in einer materialisierten Ansicht oder Streamingtabelle nicht downgraden, auch wenn Sie anschließend Löschvektoren deaktivieren.