VACUUM Delta-tabeller

Bruk Delta Lake-kommandoen VACUUM for permanent å fjerne datafiler som ikke lenger refereres til i en Delta-tabell og som er eldre enn din lagringsgrense.

In Fabric VACUUM hjelper det deg med å rydde opp i utdaterte filer i OneLake etter oppdateringer, slettinger, sammenslåinger og komprimeringsoperasjoner. Den reduserer lagringsforbruket, fjerner utdaterte filer som Fabric ikke lenger trenger for den aktive tabellens tilstand, og tar tilbake plass etter vedlikeholdsoperasjoner som OPTIMIZE.

VACUUM følger de samme kjernekonseptene fra Delta Lake som du kanskje kjenner fra åpen kildekode Delta Lake, men du kjører det i Fabric Spark-opplevelser som notatbøker, Spark-jobbdefinisjoner og Lakehouse Maintenance UI.

Hva STØVSUGER fjerner

En Delta-tabell holder oversikt over filene som utgjør den nåværende tabellens tilstand i Delta-loggen. Når operasjoner som UPDATE, DELETE, , MERGEoverskriver skrivinger eller komprimering erstatter eldre Parquet-filer med nyere, kan de gamle filene bli urefererte.

VACUUM fjerner disse urefererte filene bare når begge disse betingelsene er oppfylt:

  • Filene refereres ikke lenger til i Delta-loggen.
  • Filene er eldre enn den konfigurerte lagringsgrensen.

Fordi VACUUM filer permanent sletter fra OneLake, bruk det forsiktig når du fortsatt trenger eldre tabellversjoner.

Hvorfor VACUUM er viktig

Løp VACUUM når du vil:

  • Reduser lagringskostnadene ved å slette utdaterte filer fra OneLake
  • Gjenvinn plass etter oppdateringer, slettinger og sammenslåingsoperasjoner
  • Rydd opp i forhåndskomprimeringsfiler etter OPTIMIZE at du har opprettet erstatningsfiler
  • Unngå at langvarige produksjonstabeller samler opp unødvendige utdaterte datafiler

VACUUM forbedrer ikke spørringsytelsen alene på samme måte som komprimering eller filoppsett-optimaliseringer gjør. Hovedformålet er opprydding i lageret.

Hvor man skal kjøre vakuum

VACUUM er en Spark-kommando i Fabric. Kjør den på steder som bruker Spark-motoren, for eksempel:

  • Tekstilnotatbøker
  • Spark-jobbdefinisjoner
  • Lakehouse Maintenance UI og rørledningsbaserte vedlikeholdsarbeidsflyter

Ikke kjør VACUUM i SQL analytics-endepunktet eller warehouse-SQL-editoren. Disse erfaringene støtter ikke vedlikeholdskommandoer for Spark Delta.

Hvis du ønsker en portalbasert arbeidsflyt, se vedlikehold av Lakehouse-tabellen.

Bemerkning

I notatbøker, kjør SQL-eksempler i en Spark SQL-celle, Python-eksempler i en PySpark-celle, og Scala-eksempler i en Scala-celle.

Syntakseksempler

Bruk følgende eksempler når du kjører VACUUM i Fabric.

Støvsug et bord med standard retensjon

VACUUM schema_name.table_name

Støvsug et bord med en tilpasset retensjonsterskel

VACUUM schema_name.table_name RETAIN 168 HOURS

Forhåndsvisningsfiler med DRY RUN

Bruk DRY RUN den til å liste opp filene som vil bli slettet uten å faktisk 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-modus

VACUUM LITE er et raskere alternativ som kun bruker Delta-transaksjonsloggen for å identifisere urefererte filer, i stedet for å liste opp hver fil i tabellkatalogen. Denne tilnærmingen er betydelig raskere for store tabeller med mange filer.

VACUUM schema_name.table_name LITE

VACUUM schema_name.table_name LITE RETAIN 168 HOURS

VACUUM LITE identifiserer filer som skal fjernes ved å lese Delta-loggen i stedet for å utføre en full katalogliste. Det er raskere, men det krever nok logghistorikk for å avgjøre hvilke filer som ikke er referert. Hvis Delta-loggen er beskjært utover det LITE modusen trenger, opprettes et DELTA_CANNOT_VACUUM_LITE unntak — i så fall tilbake til standard VACUUM (full modus).

Bemerkning

VACUUM LITE støttes i Fabric Spark runtime 2.0 (Delta 4.1) eller nyere. Verifiser at Fabric-runtime-versjonen din støtter denne funksjonen.

Vakuum med en lagertabell

For veldig store tabeller hvor selv standard VACUUM full katalogliste er treg, kan du gi et forhåndsberegnet fillager. I stedet for å liste tabellkatalogen under kjøring, VACUUM leser filstier fra inventaret 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://%')

Inventartabellen (eller spørringen) må ha følgende skjema:

Kolonne Type Beskrivelse
path streng Fullt kvalifisert fil URI.
length heltall Filstørrelse i bytes.
isDir boolsk Om oppføringen er en katalog.
modificationTime heltall Fil sist endret tid i millisekunder siden epoken.

Du kan fylle ut en inventartabell fra OneLake-filmetadata, lagerkonto-inventarrapporter eller en tilpasset Spark-jobb som lister tabellkatalogen på en tidsplan. Dette frigjør det kostbare fillistingssteget fra selve operasjonen VACUUM .

Standard oppbevaringsperiode

Hvis du ikke spesifiserer et oppbevaringsintervall, VACUUM bruker du standard oppbevaringsperiode på syv dager, som er 168 timer.

Denne standarden gir aktive lesere, forfattere og tidsreise-forespørsler et tryggere vindu før eldre filer fjernes.

Sikkerhetssjekk for korte oppbevaringsperioder

Delta Lake inkluderer en retensjonssikkerhetssjekk kontrollert av spark.databricks.delta.retentionDurationCheck.enabled.

Hvis du prøver å bruke en oppbevaringsperiode kortere enn syv dager, advarer denne sikkerhetssjekken deg med mindre du eksplisitt deaktiverer sjekken i Spark-konfigurasjonen din.

Vær ekstra forsiktig før du deaktiverer denne sikringen. Et kort lagringsvindu kan fjerne filer som samtidige arbeidsbelastninger eller gjenopprettingsscenarier fortsatt trenger.

For eksempel ber disse kommandoene om en dags oppbevaringsperiode:

VACUUM schema_name.table_name RETAIN 24 HOURS

Hvis miljøet ditt har sikkerhetssjekken aktivert, advarer kjøretiden deg om lagringsinnstillinger under syv dager.

Forstå virkningen av tidsreiser

Delta Lake tidsreiser lar deg søke i eldre tabellversjoner så lenge de nødvendige historiske filene fortsatt eksisterer.

VACUUM Fjerner filer som er eldre enn oppbevaringsvinduet, så det fjerner også datafilene som trengs for tidsreiser utover det vinduet. Etter at disse filene er støvsuget, kan du ikke lenger søke i de eldre versjonene.

Før du reduserer retention, bestem hvor mye historisk tilgang arbeidsbelastningene dine, revisjoner, feilsøkingssteg og gjenopprettingsprosesser krever. For mer informasjon, se Tidsreise.

Forstå virkningen på delesjonsvektorer

Slettingsvektorer kan markere rader som slettet uten umiddelbart å omskrive alle berørte datafiler. På grunn av denne oppførselen kan filer som ser gamle ut fortsatt være en del av den aktive tabellens tilstand.

VACUUM fjerner ikke filer som fortsatt refereres, inkludert filer som fortsatt er gyldige fordi deletion vector-metadata fortsatt peker på dem. Hvis du bruker slettevektorer og senere omorganiserer eller optimaliserer tabellen, kan mer utdaterte filer bli kvalifisert for VACUUM etter at disse endringene er fullført.

For å fysisk omskrive data påvirket av slettingsvektorer, se REORG Delta-tabeller.

Følg anbefalte fremgangsmåter

Bruk disse praksisene når du kjører VACUUM i Fabric:

  • Kjør VACUUM etter OPTIMIZE for å fjerne forhåndskomprimeringsfiler som ikke lenger er nødvendige.
  • Ikke sett retensjon under syv dager med mindre du tydelig forstår effekten på tidsreiser, lesere, forfattere og restitusjon.
  • Planlegg regelmessige VACUUM operasjoner i produksjonspipelines slik at utdaterte filer ikke hoper seg opp i OneLake.
  • Bestem deg for dine tidsreisebehov før du forkorter retensjonen.
  • Bruk DRY RUN først når du vil verifisere hvilke filer som er i ferd med å bli fjernet.

For vedlikeholdsveiledning Fabric, se Table vedlikeholdsoversikt og Lakehouse table maintenance.

Forstå hva VACUUM ikke fjerner

VACUUM fjerner utdaterte datafiler, men sletter ikke Delta-loggfiler i mappen _delta_log .

Delta-loggopprydding følger sjekkpunkt- og loggretensjonsatferd, som er adskilt fra VACUUM.