Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Borttagningsvektorer snabbar upp DELETE, UPDATE och MERGE operationer på Delta Lake- och Apache Iceberg-tabeller. Utan borttagningsvektorer kräver ändring av en enskild rad att hela Parquet-filen som innehåller den posten skrivs om. Borttagningsvektorer markerar rader som ändrade i metadata i stället, och läsningar tillämpar borttagningsvektorposterna vid frågetillfället för att lösa det aktuella tabelltillståndet.
Note
För förutsägande I/O-uppdateringar använder Photon borttagningsvektorer för att påskynda DELETE, MERGEoch UPDATE åtgärder. Se Använda förutsägande I/O för att påskynda uppdateringar.
Prerequisites
Alla Apache Iceberg v3-tabeller innehåller borttagningsvektorer som standard. Se Använda Apache Iceberg v3-funktioner. För Delta Lake-tabeller måste du uttryckligen aktivera borttagningsvektorer.
Om du vill skriva tabeller med borttagningsvektorer med alla optimeringar använder du Databricks Runtime 14.3 LTS och senare. Om du vill läsa dem använder du Databricks Runtime 12.2 LTS och senare.
I Databricks Runtime 14.2 och senare stöder tabeller med borttagningsvektorer samtidighet på radnivå. Se konkurrens på radnivå.
Klientkompatibilitet
Azure Databricks använder borttagningsvektorer för att driva förutsägande I/O för uppdateringar av Photon-aktiverad beräkning. Se Använda förutsägande I/O för att påskynda uppdateringar.
Stöd för att använda borttagningsvektorer för läsningar och skrivningar varierar beroende på klient.
I följande tabell visas klientversioner som krävs för att läsa och skriva vektortabeller för borttagning:
| Client | Skriv borttagningsvektorer | Läs borttagningsvektorer |
|---|---|---|
| Databricks Runtime med Photon | Stödjer MERGE, UPDATE och DELETE använder Databricks Runtime 12.2 LTS och senare. |
Kräver Databricks Runtime 12.2 LTS eller senare. |
| Databricks Runtime utan Photon | Stöder DELETE med Databricks Runtime 12.2 LTS och senare. Stöder UPDATE med Databricks Runtime 14.1 och senare. Stöds för MERGE med Databricks Runtime 14.3 LTS och senare. |
Kräver Databricks Runtime 12.2 LTS eller senare. |
| OSS Apache Spark med OSS Delta Lake | Stöder DELETE med OSS Delta 2.4.0 och senare. Stöder UPDATE med OSS Delta 3.0.0 och senare. |
Kräver OSS Delta 2.3.0 eller senare. |
| OpenSharing-mottagare | Skrivningar stöds inte i OpenSharing-tabeller. | Azure Databricks kräver Databricks Runtime 14.1 eller senare. Apache Spark med öppen källkod kräver delta-sharing-spark 3.1 eller senare. |
Support med andra klienter finns i dokumentationen för OSS Delta Lake-integreringar.
Aktivera borttagningsvektorer
I inställningarna för arbetsytan kan du aktivera borttagningsvektorer i nya tabeller när du använder ett SQL-lager eller Databricks Runtime 14.3 LTS eller senare. Standardinställningarna varierar beroende på region. Se Automatisk aktivering av borttagningsvektorer.
Borttagningsvektorer är inte aktiverade som standard för materialiserade vyer och strömmande tabeller som lagras i Hive-metaarkivet.
Om du vill aktivera eller ta bort borttagningsvektorer manuellt i en tabell eller vy använder du tabellegenskapen enableDeletionVectors .
Så här aktiverar du borttagningsvektorer i en tabell när du skapar eller ändrar en tabell:
Delta Lake
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Isbergsbord
CREATE TABLE <table-name> [options] TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
Du kan inte använda en ALTER instruktion för att aktivera eller ta bort borttagningsvektorer i en materialiserad vy eller en strömmande tabell. Du måste använda en CREATE TABLE instruktion.
Varning
När du aktiverar borttagningsvektorer uppgraderar Databricks tabellprotokollet. Efter uppgraderingen kan klienter utan stöd för borttagningsvektor inte läsa tabellen. Se Delta Lake-funktionskompatibilitet och protokoll.
I Databricks Runtime 14.1 och senare kan du släppa tabellfunktionen för borttagningsvektorer för att aktivera kompatibilitet med andra klienter. Se Ta bort en Delta Lake-tabellfunktion och nedgradera tabellprotokollet.
Tillämpa mjuk borttagning på datafiler
Borttagningsvektorer markerar ändringar i rader som mjuka borttagningar som logiskt ändrar befintliga Parquet-datafiler i tabellen. Om du vill skriva om Parquet-datafilerna fysiskt gör du något av följande:
- Kör
OPTIMIZEi tabellen. - Kör
REORG TABLE ... APPLY (PURGE)i tabellen. Det här kommandot skriver om alla datafiler som innehåller poster med borttagningsvektorändringar. Se även REORG TABLE. - Kör en skrivning med automatisk komprimering, vilket utlöser en omskrivning av en datafil med en borttagningsvektor.
Filkomprimeringshändelser har inga strikta garantier när det gäller att lösa ändringar som registrerats i borttagningsvektorer. Vissa ändringar som registrerats i borttagningsvektorer kanske inte tillämpas fysiskt om måldatafiler inte är kandidater för filkomprimering.
Ta bort gamla data fysiskt
Ändrade data kan fortfarande finnas i en tabells gamla datafiler efter en rensningsåtgärd. Du kanske vill ta bort data fysiskt, till exempel för att minska lagringskostnaderna med din molnleverantör eller för att följa GDPR-begäranden.
Så här tar du bort gamla data fysiskt:
- Kör
REORG TABLE ... APPLY (PURGE) - Kör
VACUUMmed kvarhållningströskeln inställd på tidsstämpeln för slutförd rensning för att fysiskt ta bort filer från tidigare versioner av tabellen. Se Rensa endast metadata för att tvinga omskrivning av data.
Förbättra prestanda för stora tabeller
Om du vill förbättra prestanda för rensningar på stora tabeller anger du spark.databricks.delta.reorg.purgeMode till rows.
Ange till exempel den här konfigurationen när du rensar data manuellt med REORG TABLE ... APPLY (PURGE) eller när du tar bort borttagningsvektorer med ALTER TABLE DROP FEATURE deletionVectors.
Som standard är spark.databricks.delta.reorg.purgeMode inställt på all. I stora tabeller kan den här åtgärden vara långsam eftersom rensningsåtgärder måste söka igenom alla Parquet-filsidfötter för att söka efter både borttagna kolumndata och mjukt borttagna rader.
Värdet rows begränsar åtgärden till att endast hantera filer med mjukt borttagna rader. I stora tabeller kan detta förbättra prestandan om många filer inte innehåller mjukt borttagna rader och tabellen inte har några borttagna kolumner.
Limitations
- Iceberg v2-läsningar stöder inte raderingsvektorer. Apache Iceberg v3 stöder raderingsvektorer på tabeller med Iceberg-läsningar aktiverade. Se Använda Apache Iceberg v3-funktioner.
- Du kan inte använda en GENERATE-instruktion för att generera en manifestfil för en tabell som har filer med borttagningsvektorer. Om du vill generera ett manifest kör du först en REORG TABLE ... APPLY-instruktionen (PURGE) och kör sedan
GENERATE-instruktionen. Du måste kontrollera att inga samtidiga skrivåtgärder körs när du skickar -instruktionenREORG.- Du kan inte generera manifestfiler stegvis för en tabell med borttagningsvektorer aktiverade (till exempel genom att ange tabellegenskapen
delta.compatibility.symlinkFormatManifest.enabled=true).
- Du kan inte generera manifestfiler stegvis för en tabell med borttagningsvektorer aktiverade (till exempel genom att ange tabellegenskapen
- Om du aktiverar borttagningsvektorer i en materialiserad vy eller direktuppspelningstabell och sedan tar bort borttagningsvektorer gäller inte borttagningsvektorer för framtida skrivningar i vyn eller tabellen, men befintliga borttagningsvektorer finns kvar.
- Du kan inte nedgradera tabellprotokollet efter aktivering av borttagningsvektorer i en materialiserad vy eller strömningstabell, även om du därefter inaktiverar borttagningsvektorer.