Delen via


VACUUM

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Verwijder ongebruikte bestanden uit een tabelmap.

Notitie

Deze opdracht werkt anders, afhankelijk van of u aan een Delta- of Apache Spark-tabel werkt.

Een Delta-tabel leegmaken

Recursief vacuümmappen die zijn gekoppeld aan de Delta-tabel. Zie Ongebruikte gegevensbestanden verwijderen met vacuümvoor meer informatie en beperkingen.

VACUUM verwijdert alle bestanden uit de tabelmap die niet worden beheerd door Delta, evenals gegevensbestanden die niet langer de meest recente status van het transactielogboek voor de tabel hebben en ouder zijn dan een bewaardrempel. VACUUM slaat alle mappen over die beginnen met een onderstrepingsteken (_), inclusief de _delta_log. Het partitioneren van uw tabel op een kolom die begint met een onderstrepingsteken is een uitzondering op deze regel; VACUUM scant alle geldige partities die zijn opgenomen in de doel-Delta-tabel. Delta-tabelgegevensbestanden worden verwijderd op basis van de tijd dat ze logisch zijn verwijderd uit het transactielogboek van Delta plus retentieuren, niet de wijzigingstijdstempels op het opslagsysteem. De standaarddrempelwaarde is 7.

In Delta-tabellen Azure Databricks niet automatischVACUUM bewerkingen activeren.

Als u VACUUM op een Delta-tabel uitvoert, verliest u de mogelijkheid om terug te in de tijd te reizen naar een versie die ouder is dan de opgegeven gegevensretentieperiode.

Waarschuwing

Het is raadzaam om een bewaarinterval in te stellen op ten minste 7 dagen, omdat oude momentopnamen en niet-verzonden bestanden nog steeds in gebruik kunnen zijn door gelijktijdige lezers of schrijvers aan de tabel. Als VACUUM actieve bestanden opschoont, kunnen gelijktijdige lezers mislukken of, erger, tabellen beschadigd raken wanneer VACUUM bestanden verwijdert die nog niet zijn doorgevoerd. U moet een interval kiezen dat langer is dan de langstlopende gelijktijdige transactie en de langste periode die elke stream achter kan blijven bij de meest recente update van de tabel.

Delta Lake heeft een veiligheidscontrole om te voorkomen dat u een gevaarlijke VACUUM opdracht uitvoert. In Databricks Runtime weet u zeker dat er geen bewerkingen worden uitgevoerd in deze tabel die langer duren dan het retentieinterval dat u wilt opgeven. U kunt deze veiligheidscontrole uitschakelen door de Spark-configuratie-eigenschap in te stellen spark.databricks.delta.retentionDurationCheck.enabled op false.

VACUUM table_name { { FULL | LITE } |  RETAIN num HOURS | DRY RUN } [...]

In Databricks Runtime 16.0 en eerder moet RETAIN num HOURS voorafgaan aan DRY RUN in de syntaxis.

Belangrijk

Het bewaarvenster voor de opdracht VACUUM wordt bepaald door de eigenschap delta.deletedFileRetentionDuration tabel, die standaard 7 dagen is. Dit betekent dat VACUUM gegevensbestanden verwijdert waarnaar in de afgelopen 7 dagen niet meer wordt verwezen door een Delta-tabelversie. Als u gegevens gedurende een langere periode wilt bewaren, bijvoorbeeld om tijdreizen voor langere duur te ondersteunen, stelt u deze tabeleigenschap in op een hogere waarde. In het volgende voorbeeld ziet u hoe u deze drempelwaarde instelt op 30 dagen:

ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');

Parameters

  • table_name

    Identificeert een bestaande Delta-tabel. De naam mag geen tijdelijke specificatie of optiesspecificatie bevatten.

  • RETAIN num HOURS

    De drempelwaarde voor retentie.

  • DRY RUN

    Retourneert een lijst met maximaal 1000 bestanden die moeten worden verwijderd.

  • FULL of LITE

    nl-NL: Van toepassing op:aangevinkt als ja Databricks SQL aangevinkt als ja Databricks Runtime 16.1 en hoger

    FULL voert de vacuümbewerking uit in de volledige -modus. Hiermee verwijdert u gegevensbestanden buiten de bewaarduur en alle bestanden in de tabelmap waarnaar niet wordt verwezen door de tabel.

    LITE voert de vacuümbewerking uit in Lite modus. In plaats van alle bestanden in de tabelmap te vinden, gebruikt VACUUM het Delta-transactielogboek om bestanden te identificeren en te verwijderen waarnaar niet meer wordt verwezen door tabelversies binnen de retentieduur. Als VACUUM LITE niet kan worden voltooid omdat het Delta-logboek is opgeschoond, wordt er een DELTA_CANNOT_VACUUM_LITE uitzondering gegenereerd.

    De standaardwaarde is FULL.

Een niet-Delta-tabel opschonen

Recursief verwijdert mappen die verbonden zijn aan de niet-Delta-tabel en verwijdert niet-verzette bestanden ouder dan een retentietijdslimiet. De standaarddrempelwaarde is 7.

In niet-Delta-tabellen activeert Azure Databricks automatisch VACUUM bewerkingen wanneer gegevens worden geschreven.

Syntaxis

VACUUM table_name [RETAIN num HOURS]

Parameters

  • table_name

    Identificeert een bestaande tabel op naam of pad.

  • RETAIN num HOURS

    De drempelwaarde voor retentie.