VAKUUM Delta-tabeller

Brug Delta Lake-kommandoen VACUUM til permanent at fjerne datafiler, der ikke længere refereres til i en Delta-tabel og som er ældre end din opbevaringstærskel.

In Fabric VACUUM hjælper det dig med at rydde op i forældede filer i OneLake efter opdateringer, sletninger, sammenfletninger og kompakteringsoperationer. Det reducerer lagerforbruget, fjerner forældede filer, som Fabric ikke længere har brug for for den aktive tabeltilstand, og genvinder plads efter vedligeholdelsesoperationer som OPTIMIZE.

VACUUM følger de samme kernekoncepter fra Delta Lake, som du måske kender fra open source Delta Lake, men du kører det i Fabric Spark-oplevelser som notesbøger, Spark-jobdefinitioner og Lakehouse Maintenance UI.

Hvad STØVSUGER fjerner

En Delta-tabel holder styr på de filer, der udgør den aktuelle tabelstatus i Delta-loggen. Når operationer som UPDATE, DELETE, , MERGEoverskriver skrivninger eller kompaktering erstatter ældre Parquet-filer med nyere, kan de gamle filer blive urefererede.

VACUUM fjerner kun disse ikke-refererede filer, når begge disse betingelser er opfyldt:

  • Filerne refereres ikke længere til i Delta-loggen.
  • Filerne er ældre end den konfigurerede retentionsgrænse.

Fordi VACUUM det permanent sletter filer fra OneLake, brug det forsigtigt, når du stadig har brug for ældre tabelversioner.

Hvorfor VACUUM betyder noget

Løb, VACUUM når du vil:

  • Reducer lageromkostningerne ved at slette forældede filer fra OneLake
  • Genindtager plads efter opdateringer, sletninger og sammenfletningsoperationer
  • Ryd op i forkomprimeringsfiler efter OPTIMIZE oprettelsen af erstatningsfiler
  • Hold langvarige produktionstabeller fra at opsamle unødvendige forældede datafiler

VACUUM forbedrer ikke forespørgselsydelsen alene på samme måde som komprimerings- eller fillayoutoptimeringer gør. Dens hovedformål er oprydning af opbevaringen.

Hvor man skal køre VACUUM

VACUUM er en Spark-kommando i Fabric. Kør det steder, der bruger Spark-motoren, såsom:

  • Stofnotesbøger
  • Spark-jobdefinitioner
  • Lakehouse Maintenance UI og pipeline-baserede vedligeholdelsesworkflows

Kør VACUUM ikke i SQL analytics-endpointet eller warehouse-SQL-editoren. Disse erfaringer understøtter ikke Spark Delta vedligeholdelseskommandoer.

Hvis du ønsker en portalbaseret arbejdsgang, se vedligeholdelse af Lakehouse-tabellen.

Bemærkning

I notesbøger kør SQL-eksempler i en Spark SQL-celle, Python-eksempler i en PySpark-celle og Scala-eksempler i en Scala-celle.

Syntakseksempler

Brug følgende eksempler, når du kører VACUUM i Fabric.

Vakuumér en tabel med standardretention

VACUUM schema_name.table_name

Støvsug et bord med en tilpasset fastholdelsestærskel

VACUUM schema_name.table_name RETAIN 168 HOURS

Forhåndsvisning af filer med DRY RUN

Brug DRY RUN den til at liste de filer, der ville blive slettet, uden faktisk at slette dem.

VACUUM schema_name.table_name DRY RUN

Du kan også kombinere RETAIN og DRY RUN.

VACUUM schema_name.table_name RETAIN 168 HOURS DRY RUN

Vakuum i LITE-tilstand

VACUUM LITE er et hurtigere alternativ, der kun bruger Delta-transaktionsloggen til at identificere urefererede filer, i stedet for at opremse alle filer i tabelmappen. Denne tilgang er betydeligt hurtigere for store tabeller med mange filer.

VACUUM schema_name.table_name LITE

VACUUM schema_name.table_name LITE RETAIN 168 HOURS

VACUUM LITE identificerer filer, der skal fjernes ved at læse Delta-loggen i stedet for at lave en fuld mappeliste. Det er hurtigere, men kræver nok loghistorik til at afgøre, hvilke filer der ikke er refereret. Hvis Delta-loggen er blevet beskåret ud over, hvad LITE tilstanden kræver, hæves en DELTA_CANNOT_VACUUM_LITE undtagelse — i så fald falder man tilbage til standarden VACUUM (fuld tilstand).

Bemærkning

VACUUM LITE understøttes i Fabric Spark runtime 2.0 (Delta 4.1) eller nyere. Sikre dig, at din Fabric-runtime-version understøtter denne funktion.

Vakuum med en lagertabel

For meget store tabeller, hvor selv standardlisten VACUUM over fulde mapper er langsom, kan du give et forudberegnet lager af filer. I stedet for at vise tabellens mappe ved kørsel, VACUUM læser filstier fra det lager, du leverer.

VACUUM schema_name.table_name USING INVENTORY inventory_table_name

VACUUM schema_name.table_name USING INVENTORY (SELECT * FROM inventory_table_name WHERE path LIKE 'abfss://%')

Lagertabellen (eller forespørgslen) skal have følgende skema:

Kolonne Type Beskrivelse
path streng Fuldt kvalificeret fil, URI.
length heltal Filstørrelse i bytes.
isDir boolesk Om opslaget er et katalog.
modificationTime heltal Arkiver sidst ændrede tid i millisekunder siden epoken.

Du kan udfylde en lagertabel fra OneLake-filmetadata, lagerkonto-lagerrapporter eller et brugerdefineret Spark-job, der viser tabelmappen på en tidsplan. Dette adskiller det dyre fillistetrin fra selve operationen VACUUM .

Standardopbevaringsperiode

Hvis du ikke angiver et opbevaringsinterval, VACUUM bruger du standardopbevaringsperioden på syv dage, hvilket er 168 timer.

Den standard giver aktive læsere, forfattere og tidsrejseforespørgsler et sikrere vindue, før ældre filer fjernes.

Sikkerhedstjek ved korte opbevaringsperioder

Delta Lake inkluderer en sikkerhedskontrol kontrolleret af spark.databricks.delta.retentionDurationCheck.enabled.

Hvis du prøver at bruge en opbevaringsperiode kortere end syv dage, advarer denne sikkerhedskontrol dig, medmindre du eksplicit deaktiverer kontrollen i din Spark-konfiguration.

Vær ekstra forsigtig, før du deaktiverer denne sikring. Et kort opbevaringsvindue kan fjerne filer, som samtidige arbejdsbelastninger eller gendannelsesscenarier stadig har brug for.

For eksempel anmoder disse kommandoer om en opbevaringsperiode på én dag:

VACUUM schema_name.table_name RETAIN 24 HOURS

Hvis dit miljø har sikkerhedstjekket aktiveret, advarer runtime-funktionen dig om opbevaringsindstillinger under syv dage.

Forstå virkningen af tidsrejser

Delta Lake tidsrejser lader dig forespørge ældre tabelversioner, så længe de nødvendige historiske filer stadig eksisterer.

VACUUM Fjerner filer, der er ældre end opbevaringsvinduet, så det fjerner også de datafiler, der er nødvendige for tidsrejser ud over det vindue. Når de filer er støvsuget, kan du ikke længere forespørge de ældre versioner.

Før du reducerer fastholdelse, skal du beslutte, hvor meget historisk adgang dine arbejdsbelastninger, revisioner, fejlsøgningsskridt og gendannelsesprocesser kræver. For mere information, se Tidsrejser.

Forstå virkningen på deletionsvektorer

Sletningsvektorer kan markere rækker som slettede uden straks at omskrive alle berørte datafiler. På grund af den adfærd kan filer, der ser gamle ud, stadig være en del af den aktive tabeltilstand.

VACUUM fjerner ikke filer, der stadig refereres, inklusive filer der stadig er gyldige, fordi deletion vector-metadata stadig peger på dem. Hvis du bruger slettevektorer og senere omorganiserer eller optimerer tabellen, kan mere forældede filer blive tilgængelige efter VACUUM disse ændringer er færdige.

For fysisk at omskrive data, der påvirkes af sletningsvektorer, se REORG Delta-tabeller.

Følg bedste fremgangsmåder

Brug disse metoder, når du kører VACUUM i Fabric:

  • Kør VACUUM derefter OPTIMIZE for at fjerne forkomprimeringsfiler, der ikke længere er nødvendige.
  • Sæt ikke tilbageholdelse under syv dage, medmindre du tydeligt forstår effekten på tidsrejser, læsere, forfattere og genopretning.
  • Planlæg regelmæssige VACUUM operationer i produktionspipelines, så forældede filer ikke ophobes i OneLake.
  • Beslut dine tidsrejsebehov, før du forkorter fastholdelsen.
  • Brug DRY RUN først, når du vil tjekke, hvilke filer der er ved at blive fjernet.

For vejledning om vedligeholdelse Fabric, se Table vedligeholdelsesoversigt og Lakehouse table maintenance.

Forstå, hvad STØVSUGER ikke fjerner

VACUUM fjerner forældede datafiler, men sletter ikke Delta-logfiler i mappen _delta_log .

Delta-logoprydning følger checkpoint- og logretention-adfærd, som er adskilt fra VACUUM.