Condividi tramite


VACUUM

Si applica a:selezionato sì Databricks SQL selezionato sì 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 una RETAIN 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

  • table_name

    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 o LITE

    Si applica a:selezionato come sì Databricks SQL selezionato come sì 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. Se VACUUM 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

  • table_name

    Identifica una tabella esistente in base al nome o al percorso.

  • RETAIN num HOURS

    Soglia di conservazione.