VACUUM Delta-tabellen

Gebruik de Opdracht Delta Lake VACUUM om gegevensbestanden die niet meer worden verwezen door een Delta-tabel, permanent te verwijderen en die ouder zijn dan uw retentiedrempel.

In Fabric helpt het je om verouderde bestanden in OneLake op te ruimen VACUUM na updates, verwijderingen, samenvoegingen en compactiebewerkingen. Het vermindert het opslagverbruik, verwijdert verouderde bestanden die Fabric niet meer nodig hebben voor de actieve tabelstatus en maakt ruimte vrij na onderhoudsbewerkingen zoals OPTIMIZE.

VACUUM volgt dezelfde kernconcepten van Delta Lake die u mogelijk kent vanuit opensource Delta Lake, maar u voert deze uit in Fabric Spark-ervaringen, zoals notebooks, Spark-taakdefinities en de Lakehouse-Domeinbeheer-gebruikersinterface.

Wat VACUUM verwijdert

In een Delta-tabel worden de bestanden bijgehouden waaruit de huidige tabelstatus in het Delta-logboek bestaat. Wanneer bewerkingen zoals UPDATE, DELETE, MERGE, overwrite writes of compactie oudere Parquet-bestanden door nieuwere vervangen, kunnen de oude bestanden niet langer meer worden gerefereerd.

VACUUM verwijdert die niet-verwezen bestanden alleen als aan beide van deze voorwaarden is voldaan:

  • Er wordt niet meer naar de bestanden verwezen door het Delta-logboek.
  • De bestanden zijn ouder dan de geconfigureerde retentiedrempel.

Omdat VACUUM bestanden permanent uit OneLake worden verwijderd, gebruikt u deze zorgvuldig wanneer u nog oudere tabelversies nodig hebt.

Waarom VACUUM belangrijk is

Voer VACUUM uit wanneer u het volgende wilt:

  • Opslagkosten verlagen door verouderde bestanden uit OneLake te verwijderen
  • Ruimte vrijmaken na updates, verwijderingen en samenvoegbewerkingen
  • Pre-compactiebestanden opschonen nadat OPTIMIZE vervangende bestanden heeft gemaakt
  • Langdurige productietabellen voorkomen dat overbodige verouderde gegevensbestanden worden opgestapeld

VACUUM verbetert de prestaties van query's niet op zichzelf op dezelfde manier als de optimalisatie van compressie of bestandsindelingen. Het belangrijkste doel is het opschonen van opslag.

Waar kan ik VACUUM uitvoeren?

VACUUM is een Spark-opdracht in Fabric. Voer deze uit op plaatsen die gebruikmaken van de Spark-engine, zoals:

  • notitieblokken Fabric
  • Spark-taakdefinities
  • De gebruikersinterface voor Lakehouse-onderhoud en pijplijngebaseerde onderhoudswerkstromen

Voer VACUUM niet uit in het SQL analytics-endpoint of de warehouse-SQL-editor. Deze ervaringen bieden geen ondersteuning voor Spark Delta-onderhoudsopdrachten.

Als u een werkstroom op basis van een portal wilt, raadpleegt u Het onderhoud van de Lakehouse-tabel.

Note

Voer in notebooks SQL-voorbeelden uit in een Spark SQL-cel, Python voorbeelden in een PySpark-cel en Scala-voorbeelden in een Scala-cel.

Voorbeelden van syntaxis

Gebruik de volgende voorbeelden wanneer u VACUUM uitvoert in Fabric.

Een tabel leegmaken met de standaardretentie

VACUUM schema_name.table_name

Een tabel leegmaken met een aangepaste retentiedrempel

VACUUM schema_name.table_name RETAIN 168 HOURS

Voorbeeld van bestanden met DRY RUN

Gebruik DRY RUN deze lijst om de bestanden weer te geven die worden verwijderd zonder ze daadwerkelijk te verwijderen.

VACUUM schema_name.table_name DRY RUN

U kunt ook combineren RETAIN en DRY RUN.

VACUUM schema_name.table_name RETAIN 168 HOURS DRY RUN

Stofzuigen in LITE-modus

VACUUM LITE is een sneller alternatief dat alleen gebruikmaakt van het Delta-transactielogboek om niet-verwezen bestanden te identificeren, in plaats van elk bestand in de tabelmap op te sommen. Deze aanpak is aanzienlijk sneller voor grote tabellen met veel bestanden.

VACUUM schema_name.table_name LITE

VACUUM schema_name.table_name LITE RETAIN 168 HOURS

VACUUM LITE identificeert bestanden die moeten worden verwijderd door het Delta-logboek te lezen in plaats van een volledige mapvermelding uit te voeren. Het is sneller, maar er is voldoende logboekgeschiedenis vereist om te bepalen welke bestanden niet worden gelezen. Als het Delta-logboek verder is opgeschoond dan de modus LITE nodig heeft, wordt er een DELTA_CANNOT_VACUUM_LITE-uitzondering gegenereerd — val in dat geval terug op de standaard VACUUM (volledige modus).

Note

VACUUM LITE wordt ondersteund in Fabric Spark Runtime 2.0 (Delta 4.1) of hoger. Controleer of uw Fabric runtime-versie deze functie ondersteunt.

Stofzuigen met een inventaristabel

Voor zeer grote tabellen waarbij zelfs de standaardlijstweergave VACUUM traag is, kunt u een vooraf samengestelde inventaris van bestanden opgeven. In plaats van tijdens runtime de inhoud van de tabelmap op te sommen, leest VACUUM bestandspaden uit de inventaris die u aanlevert.

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://%')

De inventaristabel (of query) moet het volgende schema hebben:

Column Typ Description
path string Volledig gekwalificeerde bestands-URI.
length integer Bestandsgrootte in bytes.
isDir booleaans Of het item een map is.
modificationTime integer Tijdstip van laatste wijziging van bestand in milliseconden sinds de epoch.

U kunt een inventaristabel vullen vanuit metagegevens van OneLake-bestanden, inventarisrapporten van opslagaccounts of een aangepaste Spark-taak waarin de tabelmap volgens een planning wordt vermeld. Hierdoor wordt de dure stap voor het opstellen van een bestandslijst losgekoppeld van de bewerking VACUUM zelf.

Standaard retentieperiode

Als u geen bewaarinterval opgeeft, VACUUM gebruikt u de standaardretentieperiode van zeven dagen, namelijk 168 uren.

Deze standaardinstelling biedt actieve lezers, schrijvers en time-travel query's een veiliger venster voordat oudere bestanden worden verwijderd.

Veiligheidscontrole voor korte bewaarperioden

Delta Lake bevat een bewaarveiligheidscontrole die wordt beheerd door spark.databricks.delta.retentionDurationCheck.enabled.

Als u een bewaarperiode probeert te gebruiken die korter is dan zeven dagen, waarschuwt deze veiligheidscontrole u, tenzij u de controle in uw Spark-configuratie expliciet uitschakelt.

Wees voorzichtig voordat u deze beveiliging uitschakelt. Een kort bewaarvenster kan bestanden verwijderen die gelijktijdige workloads of herstelscenario's nog nodig hebben.

Met deze opdrachten wordt bijvoorbeeld een bewaarperiode van één dag aangevraagd:

VACUUM schema_name.table_name RETAIN 24 HOURS

Als uw omgeving de veiligheidscontrole ingeschakeld houdt, waarschuwt de runtime u voor bewaarinstellingen onder zeven dagen.

Begrijp de impact op tijdreizen

Met Delta Lake-tijdreizen kunt u oudere tabelversies opvragen zolang de vereiste historische bestanden nog bestaan.

VACUUM verwijdert bestanden die ouder zijn dan het bewaarvenster, zodat ook de gegevensbestanden worden verwijderd die nodig zijn voor tijdreizen buiten dat venster. Nadat deze bestanden zijn leeggezogen, kunt u geen query's meer uitvoeren op deze oudere versies.

Voordat u de bewaartermijn verkort, moet u bepalen hoeveel toegang tot historische gegevens uw workloads, audits, debuggingstappen en herstelprocessen vereisen. Zie Tijdreizen voor meer informatie.

Inzicht krijgen in de impact op verwijderingsvectoren

Verwijderingsvectoren kunnen rijen markeren als verwijderd zonder elk betrokken gegevensbestand onmiddellijk te herschrijven. Vanwege dit gedrag maken bestanden die er oud uitzien mogelijk nog steeds deel uit van de actieve tabelstatus.

VACUUM verwijdert geen bestanden waarnaar nog wordt verwezen, inclusief bestanden die geldig blijven omdat metagegevens van de verwijderingsvector nog steeds naar deze bestanden verwijzen. Als u verwijderingsvectoren gebruikt en de tabel later opnieuw ordenen of optimaliseren, komen er mogelijk meer verouderde bestanden in aanmerking voor VACUUM nadat deze wijzigingen zijn voltooid.

Zie REORG Delta-tabellen voor het fysiek herschrijven van gegevens die worden beïnvloed door verwijderingsvectoren.

Best practices volgen

Gebruik deze procedures wanneer u VACUUM uitvoert in Fabric:

  • Voer VACUUM uit na OPTIMIZE om pre-compactiebestanden die niet meer nodig zijn te verwijderen.
  • Stel retentie niet onder zeven dagen in, tenzij u duidelijk begrijpt wat het effect is op tijdreizen, lezers, schrijvers en herstel.
  • Plan normale VACUUM bewerkingen in productiepijplijnen, zodat verouderde bestanden niet worden verzameld in OneLake.
  • Bepaal uw vereisten voor tijdreizen voordat u de bewaartermijn verkort.
  • Gebruik DRY RUN eerst wanneer u wilt controleren welke bestanden binnenkort worden verwijderd.

Voor Fabric-brede richtlijnen voor onderhoud, zie Table maintenance overview en Lakehouse table maintenance.

Begrijpen wat VACUUM niet verwijdert

VACUUM verwijdert verouderde gegevensbestanden, maar verwijdert geen Delta-logboekbestanden in de _delta_log map.

Het opschonen van Delta-logboeken volgt het gedrag van controlepunten en logboekretentie, dat losstaat van VACUUM.