Vad är borttagningsvektorer?
Borttagningsvektorer är en funktion för lagringsoptimering som du kan aktivera i Delta Lake-tabeller. När en enskild rad i en datafil tas bort måste som standard hela Parquet-filen som innehåller posten skrivas om. Med borttagningsvektorer aktiverade för tabellen, DELETE
, UPDATE
och MERGE
använder åtgärder borttagningsvektorer för att markera befintliga rader som borttagna eller ändrade utan att skriva om Parquet-filen. Efterföljande läsningar i tabellen löser det aktuella tabelltillståndet genom att tillämpa borttagningarna som anges av borttagningsvektorer på den senaste tabellversionen.
Databricks rekommenderar att du använder Databricks Runtime 14.3 LTS och senare för att skriva tabeller med borttagningsvektorer för att använda alla optimeringar. Du kan läsa tabeller med borttagningsvektorer aktiverade i Databricks Runtime 12.2 LTS och senare.
I Databricks Runtime 14.2 och senare stöder tabeller med borttagningsvektorer samtidighet på radnivå. Se Skriva konflikter med samtidighet på radnivå.
Kommentar
Photon använder borttagningsvektorer för förutsägande I/O-uppdateringar, accelererande DELETE
, MERGE
och UPDATE
åtgärder. Alla klienter som stöder läsning av borttagningsvektorer kan läsa uppdateringar som skapade borttagningsvektorer, oavsett om förutsägande I/O producerade dessa uppdateringar. Se Använda förutsägande I/O för att påskynda uppdateringar.
Aktivera borttagningsvektorer
Viktigt!
En administratörsinställning för arbetsytan styr om borttagningsvektorer är automatiskt aktiverade för nya Delta-tabeller. Se Automatisk aktivering av borttagningsvektorer.
Om arbetsyteinställningen för att styra automatisk aktivering av borttagningsvektorer används, aktiveras borttagningsvektorer som standard baserat på det alternativ som valts för tabelltyper när du skapar en ny tabell med hjälp av ett SQL-lager eller Databricks Runtime 14.1 eller senare. Borttagningsvektorer är inte aktiverade som standard när du skapar materialiserade vyer eller strömmande tabeller och måste aktiveras manuellt när du skapar en materialiserad vy eller en strömningstabell.
Om du vill aktivera stöd manuellt för borttagningsvektorer i en tabell eller vy använder du tabellegenskapen delta.enableDeletionVectors
. Du kan aktivera borttagningsvektorer manuellt i en deltatabell när du skapar eller ändrar tabellen. Du kan aktivera borttagningsvektorer manuellt i en materialiserad vy eller en strömningstabell endast när du skapar den materialiserade vyn eller strömningstabellen. Du kan inte använda en ALTER
instruktion för att aktivera borttagningsvektorer i en materialiserad vy eller en strömningstabell.
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Varning
När du aktiverar borttagningsvektorer uppgraderas tabellprotokollet. Efter uppgraderingen kan tabellen inte läsas av Delta Lake-klienter som inte stöder borttagningsvektorer. Se Hur hanterar Azure Databricks Delta Lake-funktionskompatibilitet?.
I Databricks Runtime 14.1 och senare kan du släppa tabellfunktionen för borttagningsvektorer för att aktivera kompatibilitet med andra Delta-klienter. Se Drop Delta table features (Ta bort deltatabellfunktioner).
Tillämpa ändringar på Parquet-datafiler
Borttagningsvektorer anger ändringar i rader som mjuka borttagningar som logiskt ändrar befintliga Parquet-datafiler i Delta Lake-tabellen. Dessa ändringar tillämpas fysiskt när någon av följande händelser gör att datafilerna skrivs om:
- Ett
OPTIMIZE
kommando körs i tabellen. - Automatisk komprimering utlöser en omskrivning av en datafil med en borttagningsvektor.
REORG TABLE ... APPLY (PURGE)
körs mot tabellen.
Händelser som rör filkomprimering har inte strikta garantier för att matcha ändringar som registrerats i borttagningsvektorer, och vissa ändringar som registrerats i borttagningsvektorer kanske inte tillämpas om måldatafiler annars inte skulle vara kandidater för filkomprimering. REORG TABLE ... APPLY (PURGE)
skriver om alla datafiler som innehåller poster med ändringar som registrerats med borttagningsvektorer. Se REORG-TABELL.
Kommentar
Ändrade data kan fortfarande finnas i de gamla filerna. Du kan köra VACUUM för att fysiskt ta bort de gamla filerna. REORG TABLE ... APPLY (PURGE)
skapar en ny version av tabellen när den är klar. Den här slutförandetiden är den tidsstämpel som du måste överväga för kvarhållningströskeln för åtgärden VACUUM
för att ta bort borttagna filer helt. Se Ta bort oanvända datafiler med vakuum.
Kompatibilitet med Delta-klienter
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 anges nödvändiga klientversioner för läsning och skrivning av Delta-tabeller med borttagningsvektorer aktiverade och anger vilka skrivåtgärder som använder borttagningsvektorer:
Klient | Borttagningsvektorer för skrivning | Läs borttagningsvektorer |
---|---|---|
Databricks Runtime med Photon | Stöder 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 användning av Databricks Runtime 12.2 LTS och senare. Stöder UPDATE användning av Databricks Runtime 14.1 och senare. Stöder MERGE användning av 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 användning av OSS Delta 2.4.0 och senare. Stöder UPDATE användning av OSS Delta 3.0.0 och senare. |
Kräver OSS Delta 2.3.0 eller senare. |
Deltadelningsmottagare | Skrivningar stöds inte i deltadelningstabeller | Databricks: Kräver DBR 14.1 eller senare. Apache Spark med öppen källkod: Kräver delta-sharing-spark 3.1 eller senare. |
Kommentar
Support med andra Delta-klienter finns i dokumentationen för OSS Delta Lake-integreringar.
Begränsningar
- UniForm stöder inte borttagningsvektorer.
- 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 ... TILLÄMPA -instruktionen (PURGE) och kör sedan -instruktionen
GENERATE
. Du måste se till 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
). - Om du aktiverar borttagningsvektorer i en materialiserad vy eller strömningstabell och därefter inaktiverar borttagningsvektorer förhindras framtida skrivningar till vyn eller tabellen från att använda borttagningsvektorer, men befintliga borttagningsvektorer tas inte bort.
- Du kan inte nedgradera tabellprotokollet när du har aktiverat borttagningsvektorer i en materialiserad vy eller en strömningstabell. När du har aktiverat kan tabellfunktionen för borttagningsvektorer inte tas bort, även om du senare inaktiverar borttagningsvektorer i vyn eller tabellen.
- Du kan inte köra
REORG
materialiserade vyer eller strömningstabeller för att genomföra ändringar som registrerats i borttagningsvektorer till Parquet-datafiler som stöder dessa objekt. På grund av den här begränsningen ska du inte aktivera borttagningsvektorer i materialiserade vyer eller strömningstabeller om du måste garantera fullständig borttagning av poster (till exempel för GDPR- eller CCPA-efterlevnad).