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 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 müssen manuell aktiviert sein, wenn Sie eine materialisierte Ansicht oder Streamingtabelle erstellen.
Hinweis
Löschvektoren sind nicht standardmäßig für materialisierte Ansichten und Streamingtabellen aktiviert, die im Hive-Metaspeicher gespeichert sind.
Verwenden Sie die delta.enableDeletionVectors
Tabelleneigenschaft, um die Unterstützung für Löschvektoren für eine beliebige Delta-Tabelle oder -Ansicht (einschließlich Streamingtabellen und materialisierter Ansichten) manuell zu aktivieren oder zu deaktivieren. Sie können manuell auswählen, ob Löschvektoren in einer Delta-Tabelle aktiviert werden sollen, wenn Sie die Tabelle erstellen oder ändern, wie im folgenden Beispiel gezeigt. Sie können keine ALTER
Anweisung verwenden, um Löschvektoren für eine materialisierte Ansicht oder Streaming-Tabelle zu aktivieren oder zu deaktivieren.
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. 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 Delta-Clients zu ermöglichen. Weitere Informationen finden Sie unter Löschen eines Delta Lake-Tabellenfeatures und Herabstufen des Tabellenprotokolls.
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. Siehe REORG TABLE.
Hinweis
Geänderte Daten sind möglicherweise noch in den alten Dateien vorhanden. Sie können ausführen VACUUM , 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:
Kunde | 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 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
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.