Dela via


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, UPDATEoch 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, MERGEoch 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, UPDATEoch 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 -instruktionen REORG .
  • 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).