Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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, Apache Spark o Apache Iceberg.
Eseguire un'operazione vacuum su una tabella Delta
Esegue il vacuum delle directory associate alla tabella Delta in modo ricorsivo. 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
ignorerà tutte le directory che iniziano con un trattino basso (_
), incluse le _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.
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.
Se l'ottimizzazione predittiva è abilitata, Azure Databricks attiva automaticamente l'operazione VACUUM
come parte del processo di ottimizzazione. Non è necessario eseguire VACUUM
manualmente nella maggior parte dei casi.
Avviso
È consigliabile impostare un intervallo di conservazione di almeno 7 giorni, perché gli snapshot precedenti e i file non confermati possono essere ancora in uso da lettori o scrittori contemporanei 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
.
Eseguire il vacuum di una tabella Apache Iceberg
Rimuove in modo ricorsivo i file non referenziati dalle directory associate alla tabella Apache Iceberg.
- Solo
VACUUM
senza unaRETAIN
clausola è supportata per le tabelle Iceberg. - Il periodo di conservazione è fisso a 7 giorni.
Se l'ottimizzazione predittiva è abilitata, Azure Databricks attiva automaticamente l'operazione VACUUM
come parte del processo di ottimizzazione. Non è necessario eseguire VACUUM
manualmente nella maggior parte dei casi.
Sintassi
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.
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. Se il periodo di conservazione specificato supera
delta.deletedFileRetentionDuration
, viene usato il periodo di conservazione della tabella.DRY RUN
Restituisce un elenco di un massimo di 1000 file da eliminare.
FULL
oLITE
Si applica a:
Databricks SQL
Databricks Runtime 16.1 e versioni successive
FULL
esegue l'operazione vacuum 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 vacuum 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 è possibile completare l'operazione perché il log Delta è stato eliminati, viene generata un'eccezione DELTA_CANNOT_VACUUM_LITE .Il valore predefinito è
FULL
.
Importante
La finestra di conservazione per il comando VACUUM
è determinata dalla proprietà della tabella delta.deletedFileRetentionDuration
, che per impostazione predefinita è 7 giorni.
Ciò significa che VACUUM
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');
Vuoto in altre tabelle
Esegue pulizie ricorsive delle directory associate alle tabelle non Delta e non Iceberg, rimuovendo i file di cui non è stato eseguito il commit più vecchi di una soglia di conservazione. La soglia predefinita è 7 giorni.
In queste tabelle, Azure Databricks attiva automaticamente le operazioni VACUUM
man mano che i dati vengono scritti.
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.