Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Verwijderingsvectoren zijn een functie voor opslagoptimalisatie waarmee wijzigingen in tabellen worden versneld. Voor het verwijderen van één rij moet standaard het hele Parquet-bestand met die record opnieuw worden geschreven. Verwijderingsvectoren voorkomen deze overhead. Wanneer verwijderingsvectoren zijn ingeschakeld, markeren DELETE, UPDATE en MERGE-bewerkingen rijen als gewijzigd zonder het Parquet-bestand opnieuw te schrijven. Leesbewerkingen lossen vervolgens de huidige tabelstatus op door de wijzigingen toe te passen die zijn vastgelegd in verwijderingsvectoren.
Databricks raadt aan om Databricks Runtime 14.3 LTS en hoger te gebruiken om tabellen te schrijven met verwijderingsvectoren om alle optimalisaties te gebruiken. Als u tabellen wilt lezen waarvoor verwijderingsvectoren zijn ingeschakeld, gebruikt u Databricks Runtime 12.2 LTS en hoger.
In Databricks Runtime 14.2 en hoger ondersteunen tabellen met verwijderingsvectoren gelijktijdigheid op rijniveau. Zie rijniveau-concurrentie.
Notitie
Voor voorspellende I/O-updates gebruikt Photon verwijderingsvectoren om te versnellen DELETE, MERGEen UPDATE bewerkingen. Zie Voorspellende I/O gebruiken om updates te versnellen.
Verwijderingsvectoren inschakelen
In de werkruimte-instellingen kunt u verwijderingsvectoren voor nieuwe tabellen inschakelen wanneer u een SQL Warehouse of Databricks Runtime 14.3 LTS of hoger gebruikt. De standaardinstellingen variëren per regio. Zie Verwijdervectoren automatisch inschakelen.
Verwijderingsvectoren zijn niet standaard ingeschakeld voor gerealiseerde weergaven en streamingtabellen die zijn opgeslagen in hive-metastore.
Als u handmatig ondersteuning wilt in- of verwijderen voor verwijderingsvectoren in een tabel of weergave, inclusief streamingtabellen en gerealiseerde weergaven, gebruikt u de enableDeletionVectors tabeleigenschap. Verwijdervectoren in een tabel inschakelen wanneer u een tabel maakt of wijzigt:
-- For Delta tables
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
U kunt geen ALTER instructie gebruiken om verwijderingsvectoren in te schakelen of te verwijderen voor een gerealiseerde weergave of streamingtabel.
Gebruik voor Iceberg-tabellen iceberg.enableDeletionVectors in plaats van delta.enableDeletionVectors.
Waarschuwing
Wanneer u verwijderingsvectoren inschakelt, werkt Databricks het tabelprotocol bij. Na de upgrade kunnen clients zonder ondersteuning voor verwijderingsvector de tabel niet lezen. Bekijk de compatibiliteit en protocollen van Delta Lake-functies.
In Databricks Runtime 14.1 en hoger kunt u de functie verwijderingsvectorentabel verwijderen om compatibiliteit met andere clients mogelijk te maken. Zie Een Delta Lake-tabelfunctie verwijderen en het tabelprotocol degraderen.
Wijzigingen toepassen op Parquet-gegevensbestanden
Verwijderingsvectoren geven wijzigingen in rijen aan als zachte verwijderingen die de bestaande Parquet-gegevensbestanden in de tabel logisch wijzigen. Deze wijzigingen worden fysiek toegepast wanneer een van de volgende gebeurtenissen ervoor zorgt dat de gegevensbestanden opnieuw worden geschreven:
- Er wordt een
OPTIMIZEopdracht uitgevoerd in de tabel. - Automatisch comprimeren activeert een herschrijfbewerking van een gegevensbestand met een verwijderingsvector.
-
REORG TABLE ... APPLY (PURGE)wordt toegepast op de tabel.
Gebeurtenissen met betrekking tot bestandscompressie hebben geen strikte garanties voor het oplossen van wijzigingen die zijn vastgelegd in verwijderingsvectoren. Sommige wijzigingen die zijn vastgelegd in verwijderingsvectoren, worden mogelijk niet fysiek toegepast als doelgegevensbestanden geen kandidaten zijn voor het comprimeren van bestanden.
REORG TABLE ... APPLY (PURGE) herschrijft alle gegevensbestanden met records met wijzigingen die zijn vastgelegd met behulp van verwijderingsvectoren. Zie REORG TABLE.
Oude gegevens fysiek verwijderen
Gewijzigde gegevens kunnen nog steeds bestaan in de oude gegevensbestanden van een tabel na een opschoningsbewerking. U kunt de gegevens fysiek verwijderen, bijvoorbeeld om de opslagkosten te verlagen bij uw cloudprovider of om te voldoen aan AVG-aanvragen.
Voer VACUUM uit om de oude bestanden fysiek te verwijderen. De REORG TABLE ... APPLY (PURGE) bewerking maakt een nieuwe versie van de tabel wanneer deze is voltooid. Als u verwijderde bestanden uit eerdere tabelversies volledig wilt verwijderen, moet u de retentiedrempel instellen voor VACUUM de voltooiingstijdstempel van de opschoningsbewerking. Zie Alleen verwijderen van metagegevens opschonen om het herschrijven van gegevens af te dwingen.
Prestaties voor grote tabellen verbeteren
Om de prestaties te verbeteren bij het opschonen van zacht verwijderde gegevens in grote tabellen, stelt u spark.databricks.delta.reorg.purgeMode in op rows. Stel deze configuratie bijvoorbeeld in wanneer u handmatig gegevens opschoont met REORG TABLE ... APPLY (PURGE) of verwijderingsvectoren verwijdert met ALTER TABLE DROP FEATURE deletionVectors.
Standaard is spark.databricks.delta.reorg.purgeMode ingesteld op all. Bij grote tabellen kan deze bewerking traag zijn omdat opschoningsbewerkingen alle Parquet-bestandsvoetteksten moeten scannen om te controleren op zowel verwijderde kolomgegevens als voorlopig verwijderde rijen.
De rows waarde beperkt de bewerking om alleen bestanden met voorlopig verwijderde rijen te verwerken. In grote tabellen kan dit de prestaties verbeteren als veel bestanden geen voorlopig verwijderde rijen bevatten en de tabel geen verwijderde kolommen bevat.
Clientcompatibiliteit
Azure Databricks gebruikt verwijderingsvectoren om voorspellende invoer/uitvoer te verbeteren voor updates op Photon-ingeschakelde compute. 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 bevat vereiste clientversies voor het lezen en schrijven van tabellen waarvoor verwijderingsvectoren zijn ingeschakeld en geeft aan welke schrijfbewerkingen verwijderingsvectoren gebruiken:
| Client | Verwijderingsvectoren schrijven | Verwijderingsvectoren lezen |
|---|---|---|
| Databricks Runtime met Photon | Ondersteunt MERGE, UPDATE, en DELETE met 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 Databricks Runtime 14.1 of hoger. Open source Apache Spark: vereist delta-sharing-spark 3.1 of hoger. |
Zie de documentatie over OSS Delta Lake-integraties voor ondersteuning met andere clients.
Beperkingen
- UniForm Iceberg v2 biedt geen ondersteuning voor verwijderingsvectoren. Apache Iceberg v3 ondersteunt verwijderingsvectoren voor tabellen waarvoor UniForm is ingeschakeld. Zie Apache Iceberg v3-functies gebruiken.
- U kunt geen GENERATE instructie gebruiken om een manifestbestand te genereren voor een tabel die bestanden bevat met behulp van verwijderingsvectoren. Voer eerst de instructie REORG TABLE APPLY (PURGE) uit om een manifest te genereren en voer vervolgens de
GENERATE-instructie uit. U moet ervoor zorgen dat er geen gelijktijdige schrijfbewerkingen worden uitgevoerd wanneer u deREORGinstructie indient. - U kunt geen manifestbestanden voor een tabel genereren waarvoor verwijderingsvectoren zijn ingeschakeld (bijvoorbeeld door de tabeleigenschap
delta.compatibility.symlinkFormatManifest.enabled=truein te stellen). - Als u verwijderingsvectoren inschakelt voor een gerealiseerde weergave of streamingtabel en vervolgens verwijderingsvectoren verwijdert, zijn verwijderingsvectoren niet van toepassing op toekomstige schrijfbewerkingen naar de weergave of tabel, maar blijven bestaande verwijderingsvectoren behouden.
- U kunt het tabelprotocol niet downgraden nadat u verwijderingsvectoren hebt ingeschakeld voor een gerealiseerde weergave of streamingtabel. Na het inschakelen kan de tabelfunctie voor verwijderingsvectoren niet worden verwijderd, zelfs niet als u vervolgens verwijderingsvectoren uitschakelt in de weergave of tabel.