Wat zijn verwijderingsvectoren?

Verwijderingsvectoren zijn een functie voor opslagoptimalisatie die kan worden ingeschakeld voor Delta Lake-tabellen. Wanneer één rij uit een gegevensbestand wordt verwijderd, moet het hele Parquet-bestand met de record standaard opnieuw worden geschreven. Als verwijderingsvectoren zijn ingeschakeld voor de tabel, DELETEen UPDATEbewerkingen, MERGE worden verwijderingsvectoren gebruikt om bestaande rijen te markeren als verwijderd of gewijzigd zonder het Parquet-bestand te herschrijven. Volgende leesbewerkingen in de tabel zetten de huidige tabelstatus om door de verwijderingen toe te passen die door verwijderingsvectoren zijn genoteerd op de meest recente tabelversie.

Databricks raadt aan om Databricks Runtime 14.3 LTS en hoger te gebruiken om tabellen te schrijven met verwijderingsvectoren om gebruik te maken van alle optimalisaties. U kunt tabellen lezen waarvoor verwijderingsvectoren zijn ingeschakeld in Databricks Runtime 12.2 LTS en hoger.

In Databricks Runtime 14.2 en hoger ondersteunen tabellen met verwijderingsvectoren gelijktijdigheid op rijniveau. Zie Schrijfconflicten met gelijktijdigheid op rijniveau.

Notitie

Photon maakt gebruik van verwijderingsvectoren voor voorspellende I/O-updates, versnellen DELETE, MERGEen UPDATE bewerkingen. Alle clients die ondersteuning bieden voor leesverwijderingsvectoren kunnen updates lezen die verwijderingsvectoren hebben geproduceerd, ongeacht of deze updates zijn geproduceerd door voorspellende I/O. Zie Voorspellende I/O gebruiken om updates te versnellen.

Verwijderingsvectoren inschakelen

Belangrijk

Een werkruimtebeheerder bepaalt of verwijderingsvectoren automatisch zijn ingeschakeld voor nieuwe Delta-tabellen. Zie Verwijdervectoren automatisch inschakelen.

U schakelt ondersteuning in voor verwijderingsvectoren in een Delta Lake-tabel door een Delta Lake-tabeleigenschap in te stellen. U schakelt verwijderingsvectoren in tijdens het maken of wijzigen van een bestaande tabel, zoals in de volgende voorbeelden:

CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Waarschuwing

Wanneer u verwijderingsvectoren inschakelt, wordt het tabelprotocol bijgewerkt. Na de upgrade kan de tabel niet worden gelezen door Delta Lake-clients die geen ondersteuning bieden voor verwijderingsvectoren. Zie Hoe beheert Azure Databricks de compatibiliteit van Delta Lake-functies?

In Databricks Runtime 14.1 en hoger kunt u de functie verwijderingsvectorentabel verwijderen om compatibiliteit met andere Delta-clients mogelijk te maken. Zie Delta-tabelfuncties neerzetten.

Wijzigingen toepassen op Parquet-gegevensbestanden

Verwijderingsvectoren geven wijzigingen in rijen aan als voorlopig verwijderen waarmee bestaande Parquet-gegevensbestanden in de Delta Lake-tabel logisch worden gewijzigd. Deze wijzigingen worden fysiek toegepast wanneer gegevensbestanden opnieuw worden geschreven, zoals geactiveerd door een van de volgende gebeurtenissen:

  • Er wordt een OPTIMIZE opdracht uitgevoerd in de tabel.
  • Automatisch comprimeren activeert een herschrijfbewerking van een gegevensbestand met een verwijderingsvector.
  • REORG TABLE ... APPLY (PURGE) wordt uitgevoerd op de tabel.

Gebeurtenissen met betrekking tot bestandscompressie hebben geen strikte garanties voor het oplossen van wijzigingen die zijn vastgelegd in verwijderingsvectoren en sommige wijzigingen die zijn vastgelegd in verwijderingsvectoren, worden mogelijk niet toegepast als doelgegevensbestanden anders geen kandidaten zijn voor bestandscompressie. REORG TABLE ... APPLY (PURGE) herschrijft alle gegevensbestanden met records met wijzigingen die zijn vastgelegd met behulp van verwijderingsvectoren. Zie REORG TABLE.

Notitie

Gewijzigde gegevens bestaan mogelijk nog steeds in de oude bestanden. U kunt VACUUM uitvoeren om de oude bestanden fysiek te verwijderen. REORG TABLE ... APPLY (PURGE) maakt een nieuwe versie van de tabel op het moment dat deze is voltooid. Dit is de tijdstempel die u moet overwegen voor de retentiedrempel voor uw VACUUM bewerking om volledig verwijderde bestanden te verwijderen. Zie Ongebruikte gegevensbestanden verwijderen met vacuüm.

Compatibiliteit met Delta-clients

Azure Databricks maakt gebruik van verwijderingsvectoren om voorspellende I/O in te schakelen voor updates op compute met Photon. Zie Voorspellende I/O gebruiken om updates te versnellen.

Ondersteuning voor het gebruik van verwijderingsvectoren voor lees- en schrijfbewerkingen verschilt per client.

De volgende tabel geeft de vereiste clientversies aan voor het lezen en schrijven van Delta-tabellen waarvoor verwijderingsvectoren zijn ingeschakeld en geeft aan welke schrijfbewerkingen gebruikmaken van verwijderingsvectoren:

Klant Verwijderingsvectoren schrijven Verwijderingsvectoren lezen
Databricks Runtime met Photon Ondersteunt MERGE, UPDATEen DELETE gebruikt Databricks Runtime 12.2 LTS en hoger. Vereist Databricks Runtime 12.2 LTS of hoger.
Databricks Runtime zonder Photon Ondersteunt DELETE het gebruik van Databricks Runtime 12.2 LTS en hoger. Ondersteunt UPDATE het gebruik van Databricks Runtime 14.1 en hoger. Ondersteunt MERGE het gebruik van Databricks Runtime 14.3 LTS en hoger. Vereist Databricks Runtime 12.2 LTS of hoger.
OSS Apache Spark met OSS Delta Lake Ondersteunt DELETE het gebruik van OSS Delta 2.4.0 en hoger. Ondersteunt UPDATE het gebruik van OSS Delta 3.0.0 en hoger. Vereist OSS Delta 2.3.0 of hoger.
Ontvangers van Delta Delen Schrijfbewerkingen worden niet ondersteund in Delta Sharing-tabellen Databricks: vereist DBR 14.1 of hoger. Opensource Apache Spark: vereist delta-sharing-spark 3.1 of hoger.

Notitie

Zie de documentatie voor OSS Delta Lake-integraties voor ondersteuning in andere Delta-clients.

Beperkingen

  • UniForm biedt geen ondersteuning voor verwijderingsvectoren.
  • U kunt verwijderingsvectoren inschakelen voor gerealiseerde weergaven, maar als u verwijderingsvectoren voor een gerealiseerde weergave wilt uitschakelen, moet u de gerealiseerde weergave verwijderen en opnieuw maken.
  • U kunt geen manifestbestand genereren voor een tabel met verwijderingsvectoren die aanwezig zijn. Als u een manifest wilt genereren, voert u deze uit REORG TABLE ... APPLY (PURGE) en zorgt u ervoor dat er geen gelijktijdige schrijfbewerkingen worden uitgevoerd.
  • U kunt geen manifestbestanden voor een tabel genereren waarvoor verwijderingsvectoren zijn ingeschakeld.