Was sind Löschvektoren?

Löschvektoren sind ein Feature zur Speicheroptimierung, das in Delta Lake-Tabellen aktiviert werden kann. 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öschungen auf die neueste Tabellenversion angewandt werden.

Databricks empfiehlt die Verwendung von Databricks Runtime 14.3 LTS und höher, um Tabellen mit Löschvektoren zu schreiben und alle Optimierungen zu nutzen. 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 Updates lesen, die Löschvektoren generiert 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.

Sie aktivieren die Unterstützung für Löschvektoren für eine Delta Lake-Tabelle, indem Sie eine Delta Lake-Tabelleneigenschaft festlegen. Sie können Löschvektoren während der Tabellenerstellung aktivieren, oder indem Sie eine vorhandene Tabelle ändern, wie in den folgenden Beispielen gezeigt:

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 erst physisch angewandt, wenn die Datendateien neu geschrieben werden. Dies wird durch eines der folgenden Ereignisse ausgelöst:

  • 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 beim Abschluss eine neue Version der Tabelle. Dies 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 nutzt Löschvektoren, um prädiktive E/A für Updates auf Photon-fähige Computeressourcen zu ermöglichen. Weitere Informationen finden Sie unter Verwenden von Vorhersage-E/A zum Beschleunigen von Updatevorgängen.

Die Unterstützung für die Nutzung von Löschvektoren für Lese- und Schreibvorgänge ist von Client zu Client unterschiedlich.

Die folgende Tabelle enthält die erforderlichen Clientversionen zum Lesen und Schreiben von Delta-Tabellen mit aktivierten Löschvektoren und gibt an, bei welchen Schreibvorgängen Löschvektoren verwendet werden:

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

Informationen zur Unterstützung in anderen Delta-Clients finden Sie in der Dokumentation OSS Delta Lake-Integrationen.

Begrenzungen

  • UniForm unterstützt keine Löschvektoren.
  • Sie können Löschvektoren für materialisierte Ansichten aktivieren, aber um Löschvektoren für eine Materialisierte Ansicht zu deaktivieren, müssen Sie die Materialisierte Ansicht ablegen und neu erstellen.
  • Sie können keine Manifestdatei für eine Tabelle mit vorhandenen Löschvektoren generieren. Führen Sie zum Generieren eines Manifests REORG TABLE ... APPLY (PURGE) aus, und stellen Sie sicher, dass keine gleichzeitigen Schreibvorgänge ausgeführt werden.
  • Sie können keine inkrementellen Manifestdateien für eine Tabelle mit aktivierten Löschvektoren erstellen.