Condividi tramite


VACUUM

Si applica a: segno di spunta sì Databricks SQL segno di spunta 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 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. VACUUMignora 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 [RETAIN num HOURS] [DRY RUN]

Importante

La finestra di conservazione per il comando VACUUM è determinata dalla delta.deletedFileRetentionDuration proprietà table, 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. Se si desidera conservare i dati per più tempo ,ad esempio per supportare il viaggio nel tempo per durate più lunghe, è necessario impostare questa proprietà di 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

  • 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.

  • DRY RUN

    Restituisce un elenco di un massimo di 1000 file da eliminare.

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

  • table_name

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

  • RETAIN num HOURS

    Soglia di conservazione.