Delen via


VACUUM

Van toepassing op:ja aangevinkt Databricks SQL ja aangevinkt Databricks Runtime

Verwijder ongebruikte bestanden uit een tabelmap.

Notitie

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

Een Delta-tabel leegmaken

Recursief opruimen van mappen 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 dagen.

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.

Als voorspellende optimalisatie is ingeschakeld, activeert Azure Databricks de VACUUM bewerking automatisch als onderdeel van het optimalisatieproces. U hoeft in de meeste gevallen niet handmatig uit te voeren VACUUM .

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.

Een Apache Iceberg-tabel opruimen

Recursief verwijdert niet-gereferentieerde bestanden uit de directories die verbonden zijn met de Apache Iceberg-tabel.

  • Alleen VACUUM zonder component RETAIN wordt ondersteund voor Iceberg-tabellen.
  • De bewaarperiode is vastgesteld op 7 dagen.

Als voorspellende optimalisatie is ingeschakeld, activeert Azure Databricks de VACUUM bewerking automatisch als onderdeel van het optimalisatieproces. U hoeft in de meeste gevallen niet handmatig uit te voeren VACUUM .

Syntaxis

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.

Parameterwaarden

  • table_name

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

  • RETAIN num HOURS

    De drempelwaarde voor retentie. Als de opgegeven bewaarperiode hoger is delta.deletedFileRetentionDuration, wordt de bewaarperiode van de tabel gebruikt.

  • DRY RUN

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

  • FULL of LITE

    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.

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');

Stofzuig de andere tafels

Recursief vacuümt mappen die zijn gekoppeld aan niet-Delta- en niet-Iceberg-tabellen, waarbij niet-doorgevoerde bestanden ouder dan een retentiedrempel worden verwijderd. De standaarddrempelwaarde is 7 dagen.

In deze tabellen activeert Azure Databricks automatisch bewerkingen VACUUM wanneer gegevens worden geschreven.

Syntaxis

VACUUM table_name [RETAIN num HOURS]

Parameterwaarden

  • table_name

    Identificeert een bestaande tabel op naam of pad.

  • RETAIN num HOURS

    De drempelwaarde voor retentie.