Condividi tramite


VACUUM

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

Remove file inutilizzati da una directory di table.

Nota

Questo comando funziona in modo diverso a seconda di dove si stia lavorando: su Delta o Apache Spark table.

Vacuum un Delta table

Le cartelle vacuum associate in modo ricorsivo al Delta table. Per informazioni dettagliate e limitazioni, vedere i file inutilizzati di dati Remove con vacuum.

VACUUM rimuove tutti i file dalla directory table non gestiti da Delta, nonché i file di dati che non sono più nello stato più recente del log delle transazioni per il table e sono precedenti a una soglia di conservazione. VACUUMignora tutte le directory che iniziano con un carattere di sottolineatura (_), che include ._delta_log Il partizionamento del table in un column che inizia con un carattere di sottolineatura è un'eccezione a questa regola; VACUUM analizza tutte le partizioni valide incluse nel delta di destinazione table. I file di dati Delta table vengono eliminati in base al tempo in cui sono stati rimossi logicamente dal log delle transazioni di Delta, più le ore di conservazione, non in base ai loro timestamp di modifica nel sistema di archiviazione. La soglia predefinita è 7 giorni.

Su Delta tables, Azure Databricks non attiva automaticamente le operazioni VACUUM.

Se si esegue VACUUM su un tableDelta, si perde la possibilità di viaggiare nel tempo a una versione precedente rispetto al periodo di conservazione dati specificato.

Avviso

È consigliabile set un intervallo di conservazione di almeno 7 giorni, perché gli snapshot precedenti e i file di cui non è stato eseguito il commit possono essere ancora in uso da lettori o scrittori simultanei alla table. Se VACUUM pulisce i file attivi, i lettori simultanei possono fallire o, peggio, tables possono essere danneggiati quando VACUUM elimina i file di cui non è stato ancora eseguito il commit. È necessario scegliere un intervallo più lungo rispetto alla transazione simultanea con esecuzione più lunga e il periodo più lungo in cui qualsiasi flusso può essere ritardato rispetto al update più recente al table.

Delta Lake ha un controllo di sicurezza per impedire l'esecuzione di un comando pericoloso VACUUM . In Databricks Runtime, sei certo che non siano effettuate operazioni su questo table che richiedono tempo superiore all'intervallo di conservazione che si prevede di specificare, è possibile disattivare questo controllo di sicurezza impostando la proprietà di configurazione Spark spark.databricks.delta.retentionDurationCheck.enabled su false.

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

In Databricks Runtime 16.0 e versioni precedenti RETAIN num HOURS devono precedere DRY RUN nella sintassi.

Importante

Il window di conservazione per il comando VACUUM è determinato dalla proprietà delta.deletedFileRetentionDurationtable, che per impostazione predefinita è di 7 giorni. Ciò significa che VACUUM rimuove i file di dati a cui non fa più riferimento una versione delta table negli ultimi 7 giorni. Per conservare i dati per un periodo più lungo, ad esempio per supportare il viaggio temporale per durate più lunghe, set questa proprietà table a un valore superiore. L'esempio seguente mostra l'impostazione di questa soglia su 30 giorni:

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

Parameters

  • table_name

    Identifica un Delta esistente table. Il nome non deve includere una specifica temporale o una specifica delle opzioni.

  • RETAIN num HOURS

    Soglia di conservazione.

  • DRY RUN

    Restituisci un list per un massimo di 1000 file da eliminare.

  • FULL o LITE

    Si applica a:segno di spunta contrassegnato come sì Databricks Runtime 16.1 e versioni successive

    esegue l'operazione in modalità completa . Elimina i file di dati al di fuori della durata di conservazione e tutti i file nella directory table non referenziati dal table.

    LITE esegue l'operazione vacuum in modalità Lite. Anziché trovare tutti i file nella directory table, VACUUM utilizza il log delle transazioni Delta per identificare e remove file che non sono più riferiti da alcuna versione table per la durata della conservazione. Se VACUUM LITE non può essere completato perché il log Delta è stato ridotto, viene sollevata un'eccezione DELTA_CANNOT_VACUUM_LITE.

    Il valore predefinito è FULL.

Vacuum, un table, non Delta

Esegue il vacuum ricorsivo delle directory associate ai file table e remove non Delta e non confermati che sono precedenti alla soglia di conservazione. La soglia predefinita è 7 giorni.

In tablesnon Delta, Azure Databricks attiva automaticamente le operazioni di VACUUM durante la scrittura dei dati.

Sintassi

VACUUM table_name [RETAIN num HOURS]

Parameters

  • table_name

    Identifica un table esistente in base al nome o al percorso.

  • RETAIN num HOURS

    Soglia di conservazione.