VACUUM
Si applica a: Databricks SQL 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.
VACUUM
ignora 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.deletedFileRetentionDuration
table, 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
-
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
oLITE
Si applica a: 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. SeVACUUM 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
-
Identifica un table esistente in base al nome o al percorso.
RETAIN num HOURS
Soglia di conservazione.