Vad är borttagningsvektorer?

Borttagningsvektorer är en funktion för lagringsoptimering som kan aktiveras 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 utnyttja 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 producerade borttagningsvektorer, oavsett om dessa uppdateringar producerades av förutsägande I/O. 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.

Du aktiverar stöd för borttagningsvektorer i en Delta Lake-tabell genom att ange en Delta Lake-tabellegenskap. Du aktiverar borttagningsvektorer när tabellen skapas eller ändrar en befintlig tabell, som i följande exempel:

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 datafiler skrivs om, vilket utlöses av någon av följande händelser:

  • 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, vilket ä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 utnyttjar 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 utnyttja 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 utnyttjar 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

Stöd för andra Delta-klienter finns i dokumentationen för OSS Delta Lake-integreringar.

Begränsningar

  • UniForm stöder inte borttagningsvektorer.
  • Du kan aktivera borttagningsvektorer för materialiserade vyer, men om du vill inaktivera borttagningsvektorer för en materialiserad vy måste du släppa den materialiserade vyn och återskapa den.
  • Du kan inte generera en manifestfil för en tabell med borttagningsvektorer. Om du vill generera ett manifest kör REORG TABLE ... APPLY (PURGE) du och ser till att inga samtidiga skrivåtgärder körs.
  • Du kan inte generera manifestfiler stegvis för en tabell med borttagningsvektorer aktiverade.