Was sind Löschvektoren?
Löschvektoren sind ein Speicheroptimierungsfeature, das Sie in Delta Lake-Tabellen aktivieren können. Wenn eine einzelne Zeile in einer Datendatei gelöscht wird, muss standardmäßig die gesamte Parquet-Datei, die den Datensatz enthält, neu geschrieben werden. Wenn Löschvektoren für die Tabelle aktiviert sind, verwenden DELETE
, UPDATE
und MERGE
Vorgänge Löschvektoren, um vorhandene Zeilen als entfernt oder geändert zu markieren, ohne die Parquetdatei neu zu schreiben. Nachfolgende Lesevorgänge in der Tabelle lösen den aktuellen Tabellenstatus auf, indem die durch Löschvektoren angegebenen Löschvektoren auf die neueste Tabellenversion 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. Sie können Tabellen mit aktivierten Löschvektoren in Databricks Runtime 12.2 LTS und höher lesen.
In Databricks Runtime 14.2 und höher unterstützen Tabellen mit Löschvektoren die Parallelität auf Zeilenebene. Weitere Informationen finden Sie unter Schreibkonflikte mit Parallelität auf Zeilenebene.
Hinweis
Photon nutzt Löschvektoren für Vorhersage-E/A-Updates, die DELETE
-, MERGE
- und UPDATE
-Vorgänge beschleunigen. Alle Clients, die das Lesen von Löschvektoren unterstützen, können Aktualisierungen lesen, die Löschvektoren erzeugt haben, unabhängig davon, ob diese Updates von Vorhersage-E/A erstellt wurden. Weitere Informationen finden Sie unter Verwenden von Vorhersage-E/A zum Beschleunigen von Updatevorgängen.
Aktivieren von Löschvektoren
Wichtig
Eine Arbeitsbereichsadministratoreinstellung steuert, ob Löschvektoren automatisch für neue Delta-Tabellen aktiviert werden. Weitere Informationen finden Sie unter Automatische Aktivierung von Löschvektoren.
Wenn die Arbeitsbereichseinstellung zum Steuern der automatischen Aktivierung von Löschvektoren verwendet wird, werden basierend auf der option, die für Tabellentypen ausgewählt ist, Löschvektoren standardmäßig aktiviert, wenn Sie eine neue Tabelle mit einem SQL Warehouse oder Databricks Runtime 14.1 oder höher erstellen. Löschvektoren sind nicht standardmäßig aktiviert, wenn Sie materialisierte Ansichten oder Streamingtabellen erstellen und manuell aktiviert sein müssen, wenn Sie eine materialisierte Ansicht oder Streaming-Tabelle erstellen.
Verwenden Sie die delta.enableDeletionVectors
Tabelleneigenschaft, um die Unterstützung für Löschvektoren in einer Tabelle oder Ansicht manuell zu aktivieren. Sie können Löschvektoren in einer Delta-Tabelle manuell aktivieren, wenn Sie die Tabelle erstellen oder ändern. Sie können Löschvektoren in einer materialisierten Ansicht oder Streamingtabelle nur dann manuell aktivieren, wenn Sie die materialisierte Ansicht oder Streaming-Tabelle erstellen. Sie können keine ALTER
Anweisung verwenden, um Löschvektoren für eine materialisierte Ansicht oder Streamingtabelle zu aktivieren.
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Warnung
Wenn Sie Löschvektoren aktivieren, wird ein Upgrade für das Tabellenprotokoll durchgeführt. Nach dem Upgrade ist die Tabelle für Delta Lake-Clients, die keine Löschvektoren unterstützen, nicht mehr lesbar. Weitere Informationen finden Sie unter Wie verwaltet Azure Databricks die Kompatibilität von Delta Lake-Features?.
In Databricks Runtime 14.1 und höher können Sie das Tabellenfeature für Löschvektoren ablegen, um die Kompatibilität mit anderen Delta-Clients zu ermöglichen. Siehe Delta-Tabellenfeatures ablegen.
Anwenden von Änderungen auf Parquet-Datendateien
Löschvektoren zeigen Änderungen an Zeilen als vorläufig gelöscht an, die vorhandene Parquet-Datendateien in der Delta Lake-Tabelle nur 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 Komprimierung löst das erneute Generieren einer Datendatei mit einem Löschvektor aus.
REORG TABLE ... APPLY (PURGE)
wird für 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. Außerdem werden einige Änderungen, die in Löschvektoren aufgezeichnet wurden, möglicherweise nicht angewandt, wenn die Zieldatendateien andernfalls nicht für die Dateikomprimierung vorgesehen sind. REORG TABLE ... APPLY (PURGE)
schreibt alle Datendateien neu, die Datensätze mit Änderungen enthalten, die mit Löschvektoren aufgezeichnet wurden. Weitere Informationen finden Sie unter REORG TABLE.
Hinweis
Geänderte Daten sind möglicherweise noch in den alten Dateien vorhanden. Sie können VACUUM ausführen, um die alten Dateien physisch zu löschen. REORG TABLE ... APPLY (PURGE)
erstellt eine neue Version der Tabelle, wenn sie abgeschlossen ist. Diese Vervollständigungszeit ist der Zeitstempel, den Sie für den Aufbewahrungsschwellenwert für Den VACUUM
Vorgang berücksichtigen müssen, um gelöschte Dateien vollständig zu entfernen. Weitere Informationen finden Sie unter Entfernen nicht verwendeter Datendateien mit VACUUM.
Kompatibilität mit Delta-Clients
Azure Databricks verwendet Löschvektoren, um prädiktive E/A für Updates auf Photon-fähigen Compute zu ermöglichen. Weitere Informationen finden Sie unter Verwenden von Vorhersage-E/A zum Beschleunigen 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 zeigt die erforderlichen Clientversionen zum Lesen und Schreiben von Delta-Tabellen mit aktivierten Löschvektoren an und gibt an, welche Schreibvorgänge Löschvektoren verwenden:
Client | Schreibvorgänge mit Löschvektoren | Lesevorgänge mit Löschvektoren |
---|---|---|
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ützt DELETE unter Verwendung von OSS Delta 2.4.0 und höher. Unterstützt UPDATE unter Verwendung von 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 Sharing-Tabellen nicht unterstützt | Databricks: Erfordert DBR 14.1 oder höher. Open Source Apache Spark: Erfordert delta-sharing-spark 3.1 oder höher. |
Hinweis
Unterstützung für andere Delta-Clients finden Sie in der Dokumentation zu OSS Delta Lake-Integrationen.
Begrenzungen
- UniForm unterstützt keine Löschvektoren.
- Sie können keine GENERATE-Anweisung verwenden, um eine Manifestdatei für eine Tabelle mit Dateien mithilfe von Löschvektoren zu generieren. Um ein Manifest zu generieren, führen Sie zuerst eine REORG TABLE ... APPLY (PURGE)-Anweisung und führen Sie dann die
GENERATE
Anweisung aus. Sie müssen sicherstellen, dass beim Übermitteln derREORG
Anweisung 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 deaktivieren, werden zukünftige Schreibvorgänge in die Ansicht oder Tabelle daran gehindert, Löschvektoren zu verwenden, aber vorhandene Löschvektoren werden nicht entfernt.
- 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.
- Sie können nicht auf materialisierten Ansichten oder Streamingtabellen ausgeführt werden
REORG
, um Änderungen, die in Löschvektoren aufgezeichnet wurden, auf Datendateien zu übernehmen, die diese Objekte sichern. Aktivieren Sie aufgrund dieser Einschränkung keine Löschvektoren für materialisierte Ansichten oder Streamingtabellen, wenn Sie die vollständige Löschung von Datensätzen (z. B. für die DSGVO- oder CCPA-Compliance) garantieren müssen.