VACUUM
Si applica a: Databricks SQL Databricks Runtime
Rimuovere i file inutilizzati da una directory di tabella.
Nota
Questo comando funziona in modo diverso a seconda che si stia lavorando a una tabella Delta o Apache Spark.
Eseguire un'operazione vacuum su una tabella Delta
Directory a vuoto ricorsivo associate alla tabella Delta. Per informazioni dettagliate e limitazioni complete, vedere Rimuovere i file di dati inutilizzati con vuoto.
VACUUM
rimuove tutti i file dalla directory della tabella non gestiti da Delta, nonché i file di dati che non sono più nello stato più recente del log delle transazioni per la tabella 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 della tabella in una colonna che inizia con un carattere di sottolineatura è un'eccezione a questa regola; VACUUM
analizza tutte le partizioni valide incluse nella tabella Delta di destinazione. I file di dati di tabella delta vengono eliminati in base al tempo in cui sono stati rimossi logicamente dal log delle transazioni delta e dalle ore di conservazione, non i timestamp di modifica nel sistema di archiviazione. La soglia predefinita è 7 giorni.
Nelle tabelle Delta, Azure Databricks non attiva VACUUM
automaticamente le operazioni.
Se si esegue VACUUM
in una tabella Delta, si perde la possibilità di tornare a una versione precedente al periodo di conservazione dei dati specificato.
Avviso
È consigliabile impostare 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 writer simultanei alla tabella. Se VACUUM
pulisce i file attivi, i lettori simultanei possono avere esito negativo o, peggio, le tabelle possono essere danneggiate quando VACUUM
elimina i file non ancora sottoposti a commit. È necessario scegliere un intervallo più lungo rispetto alla transazione simultanea più lunga e il periodo più lungo per cui qualsiasi flusso può essere ritardato rispetto all'aggiornamento più recente della tabella.
Delta Lake ha un controllo di sicurezza per impedire l'esecuzione di un comando pericoloso VACUUM
. In Databricks Runtime si è certi che in questa tabella non sono presenti operazioni che richiedono più tempo rispetto all'intervallo di conservazione che si prevede di specificare, è possibile disattivare questo controllo di sicurezza impostando la proprietà spark.databricks.delta.retentionDurationCheck.enabled
di configurazione spark 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
La finestra di conservazione per il comando VACUUM
è determinata dalla proprietà della tabella delta.deletedFileRetentionDuration
, che per impostazione predefinita è 7 giorni.
Ciò significa VACUUM
che rimuove i file di dati a cui non fa più riferimento una versione della tabella Delta negli ultimi 7 giorni.
Per conservare i dati per un periodo più lungo, ad esempio per supportare il viaggio temporale per durate più lunghe, impostare questa proprietà della tabella su 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');
Parametri
-
Identifica una tabella Delta esistente. Il nome non deve includere una specifica temporale o una specifica delle opzioni.
RETAIN num HOURS
Soglia di conservazione.
DRY RUN
Restituisce un elenco di un massimo di 1000 file da eliminare.
FULL
oLITE
Si applica a: Databricks Runtime 16.1 e versioni successive
FULL
esegue l'operazione di aspirazione in modalità completa. In questo modo vengono eliminati i file di dati al di fuori della durata di conservazione e tutti i file nella directory della tabella non referenziati dalla tabella.LITE
esegue l'operazione di aspirazione in modalità Lite. Anziché trovare tutti i file nella directory della tabella,VACUUM
usa il log delle transazioni Delta per identificare e rimuovere i file a cui non fa più riferimento alcuna versione della tabella entro la durata di 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
.
Vuoto una tabella non Delta
Esegue il vacuum ricorsivo delle directory associate alla tabella non Delta e rimuove i file di cui non è stato eseguito il commit precedenti a una soglia di conservazione. La soglia predefinita è 7 giorni.
Nelle tabelle non Delta, Azure Databricks attiva VACUUM
automaticamente le operazioni durante la scrittura dei dati.
Sintassi
VACUUM table_name [RETAIN num HOURS]
Parametri
-
Identifica una tabella esistente in base al nome o al percorso.
RETAIN num HOURS
Soglia di conservazione.