Dela via


VACUUM

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

Ta bort oanvända filer från en tabellkatalog.

Kommentar

Det här kommandot fungerar annorlunda beroende på om du arbetar med en Delta- eller Apache Spark-tabell.

Dammsug en Delta-tabell

Rekursivt rensa katalogerna som är associerade med Delta-tabellen. Fullständig information och begränsningar finns i Ta bort oanvända datafiler med vakuum.

VACUUM tar bort alla filer från tabellkatalogen som inte hanteras av Delta, samt datafiler som inte längre är i det senaste tillståndet för transaktionsloggen för tabellen och som är äldre än ett kvarhållningströskelvärde. VACUUM hoppar över alla kataloger som börjar med ett understreck (_), som innehåller _delta_log. Partitionering av tabellen i en kolumn som börjar med ett understreck är ett undantag från den här regeln. VACUUM genomsöker alla giltiga partitioner som ingår i Delta-måltabellen. Delta-tabelldatafiler tas bort beroende på den tid de har tagits bort logiskt från Deltas transaktionslogg plus kvarhållningstimmar, inte deras ändringstidsstämplar i lagringssystemet. Den standardtröskeln är 7 dagar.

För Delta-tabeller utlöser Azure Databricks inte automatisktVACUUM operationer.

Om du kör VACUUM i en Delta-tabell förlorar du möjligheten att tidsresa tillbaka till en version som är äldre än den angivna datakvarhållningsperioden.

Varning

Vi rekommenderar att du anger ett kvarhållningsintervall på minst 7 dagar, eftersom gamla ögonblicksbilder och ogenomförda filer fortfarande kan användas av samtidiga läsare eller skrivare i tabellen. Om VACUUM rensar aktiva filer kan samtidiga läsare misslyckas eller, ännu värre, tabeller kan skadas när VACUUM tar bort filer som ännu inte har checkats in. Du måste välja ett intervall som är längre än både den längsta samtidiga transaktionen som pågår och den längsta tiden som en dataström kan ligga efter den senaste uppdateringen av tabellen.

Delta Lake har en säkerhetskontroll för att förhindra att du kör ett farligt VACUUM kommando. I Databricks Runtime är du säker på att det inte finns några åtgärder som utförs i den här tabellen som tar längre tid än det kvarhållningsintervall som du planerar att ange. Du kan inaktivera den här säkerhetskontrollen genom att ställa in spark-konfigurationsegenskapen spark.databricks.delta.retentionDurationCheck.enabled till false.

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

I Databricks Runtime 16.0 och tidigare måste RETAIN num HOURS föregå DRY RUN i syntaxen.

Viktigt!

Kvarhållningsfönstret för kommandot VACUUM bestäms av tabellens egenskap delta.deletedFileRetentionDuration, vilken är standard på 7 dagar. Det innebär att VACUUM tar bort datafiler som inte längre refereras till av en Delta-tabellversion under de senaste 7 dagarna. Om du vill behålla data under en längre period, till exempel för att stödja tidsresor under längre perioder, anger du den här tabellegenskapen till ett högre värde. I följande exempel visas hur du anger det här tröskelvärdet till 30 dagar:

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

Parametrar

  • table_name

    Identifierar en befintlig Delta-tabell. Namnet får inte innehålla en temporal specifikation eller alternativspecifikation.

  • RETAIN num HOURS

    Tröskelvärdet för kvarhållning.

  • DRY RUN

    Returnera en lista med upp till 1 000 filer som ska tas bort.

  • FULL eller LITE

    gäller för:kontrollera markerat ja Databricks SQL kontrollera markerat ja Databricks Runtime 16.1 och senare

    FULL kör vakuumåtgärden i Full-läge. Detta tar bort datafiler utanför kvarhållningstiden och alla filer i tabellkatalogen som inte refereras av tabellen.

    LITE kör vakuumåtgärden i Lite läge. I stället för att hitta alla filer i tabellkatalogen använder VACUUM Delta-transaktionsloggen för att identifiera och ta bort filer som inte längre refereras av tabellversioner inom kvarhållningstiden. Om VACUUM LITE inte kan slutföras eftersom Delta-loggen har rensats utlöses ett DELTA_CANNOT_VACUUM_LITE undantag.

    Standardvärdet är FULL.

Dammsuga en icke-Delta-tabell

Rekursivt dammsuger kataloger som är associerade med icke-Delta-tabellen och tar bort icke-incheckade filer som är äldre än en kvarhållningströskel. Den standardtröskeln är 7 dagar.

I icke-Delta-tabeller utlöser Azure Databricks automatiskt VACUUM åtgärder när data skrivs.

Syntax

VACUUM table_name [RETAIN num HOURS]

Parametrar

  • table_name

    Identifierar en befintlig tabell efter namn eller sökväg.

  • RETAIN num HOURS

    Tröskelvärdet för kvarhållning.