Tabelle VACUUM Delta

Usare il comando Delta Lake VACUUM per rimuovere definitivamente i file di dati a cui non fa più riferimento una tabella Delta e che sono precedenti alla soglia di conservazione.

In Microsoft Fabric, VACUUM consente di pulire i file non aggiornati in Microsoft OneLake dopo aggiornamenti, eliminazioni, merge e operazioni di compattazione. Riduce il consumo di archiviazione, rimuove i file obsoleti che Fabric non sono più necessari per lo stato attivo della tabella e recupera spazio dopo operazioni di manutenzione, ad esempio OPTIMIZE.

VACUUM segue gli stessi concetti principali di Delta Lake che è possibile conoscere da Delta Lake open source, ma è possibile eseguirlo in esperienze Spark Fabric come notebook, definizioni di processi Spark e Lakehouse Maintenance UI.

Cosa rimuove VACUUM

Una tabella Delta tiene traccia dei file che costituiscono lo stato corrente della tabella nel log Delta. Quando operazioni come UPDATE, DELETE, MERGE, le scritture con sovrascrittura o la compattazione sostituiscono file Parquet più vecchi con file più recenti, i file precedenti possono non essere più referenziati.

VACUUM rimuove i file senza riferimenti solo quando entrambe le condizioni sono vere:

  • I file non fanno più riferimento al log Delta.
  • I file sono precedenti alla soglia di conservazione configurata.

Poiché VACUUM elimina definitivamente i file da OneLake, usarli con attenzione quando sono ancora necessarie versioni precedenti della tabella.

Perché VACUUM è importante

Esegui VACUUM quando vuoi:

  • Ridurre i costi di archiviazione eliminando i file obsoleti da OneLake
  • Recuperare spazio dopo gli aggiornamenti, le eliminazioni e le operazioni di merge
  • Ripulire i file di pre-compattazione dopo che OPTIMIZE ha creato i file di sostituzione
  • Evitare che le tabelle di produzione di lunga durata accumulino file di dati obsoleti non necessari

VACUUM non migliora di per sé le prestazioni delle query nello stesso modo in cui lo fanno la compattazione o le ottimizzazioni dell'organizzazione dei file. Il suo scopo principale è liberare spazio di archiviazione.

Dove eseguire VACUUM

VACUUM è un comando Spark in Fabric. Eseguirlo in posizioni che usano il motore Spark, ad esempio:

  • Notebook di Fabric
  • Definizioni dei job Spark
  • L'interfaccia utente per la manutenzione di Lakehouse e i flussi di lavoro di manutenzione basati sulle pipeline

Non eseguire VACUUM nell'endpoint di analisi SQL o nell'editor SQL warehouse. Queste esperienze non supportano i comandi di manutenzione Di Spark Delta.

Per un flusso di lavoro basato sul portale, vedere La manutenzione delle tabelle lakehouse.

Note

Nei notebook, eseguire gli esempi SQL in una cella Spark SQL, gli esempi Python in una cella PySpark e gli esempi Scala in una cella Scala.

Esempi di sintassi

Usa gli esempi seguenti quando esegui VACUUM in Fabric.

Esegui il vacuum di una tabella con il periodo di conservazione predefinito

VACUUM schema_name.table_name

Vuoto una tabella con una soglia di conservazione personalizzata

VACUUM schema_name.table_name RETAIN 168 HOURS

Anteprima dei file con DRY RUN

Usare DRY RUN per elencare i file che verrebbero eliminati senza eliminarli.

VACUUM schema_name.table_name DRY RUN

È anche possibile combinare RETAIN e DRY RUN.

VACUUM schema_name.table_name RETAIN 168 HOURS DRY RUN

Vacuum in modalità LITE

VACUUM LITE è un'alternativa più veloce che usa solo il log delle transazioni Delta per identificare i file non referenziati, anziché elencare ogni file nella directory della tabella. Questo approccio è notevolmente più veloce per tabelle di grandi dimensioni con molti file.

VACUUM schema_name.table_name LITE

VACUUM schema_name.table_name LITE RETAIN 168 HOURS

VACUUM LITE identifica i file da rimuovere leggendo il log Delta anziché eseguendo un elenco di directory completo. È più veloce, ma richiede una cronologia dei log sufficiente per determinare quali file non sono referenziati. Se il log Delta è stato sfoltito oltre quanto richiesto dalla modalità LITE, viene sollevata un'eccezione DELTA_CANNOT_VACUUM_LITE; in tal caso, ricorrere alla modalità standard VACUUM (modalità completa).

Note

VACUUM LITE è supportato in Fabric runtime spark 2.0 (Delta 4.1) o versione successiva. Verificare che la versione di runtime Fabric supporti questa funzionalità.

Vacuum con una tabella di inventario

Per tabelle molto grandi in cui anche l'elenco di directory completo predefinito VACUUM è lento, è possibile fornire un inventario precompiuto dei file. Anziché elencare la directory della tabella in fase di esecuzione, VACUUM legge i percorsi dei file dall'inventario fornito.

VACUUM schema_name.table_name USING INVENTORY inventory_table_name

VACUUM schema_name.table_name USING INVENTORY (SELECT * FROM inventory_table_name WHERE path LIKE 'abfss://%')

La tabella di inventario (o query) deve avere lo schema seguente:

Column Tipo Descrizione
path Stringa URI del file completamente qualificato.
length Intero Dimensioni del file in byte.
isDir booleano Indica se l'elemento è una directory.
modificationTime Intero Ora dell'ultima modifica del file in millisecondi dall'epoca.

È possibile popolare una tabella di inventario dai metadati del file OneLake, dai report di inventario dell'account di archiviazione o da un processo Spark personalizzato che elenca la directory della tabella in base a una pianificazione. Questo separa il passaggio costoso di elenco di file dall'operazione VACUUM stessa.

Periodo di conservazione predefinito

Se non si specifica un intervallo di conservazione, VACUUM usa il periodo di conservazione predefinito di sette giorni, ovvero 168 ore.

Questa impostazione predefinita offre ai lettori attivi, ai processi di scrittura e alle query time travel un intervallo di tempo più sicuro prima che i file meno recenti vengano rimossi.

Controllo di sicurezza per brevi periodi di conservazione

Delta Lake comprende un controllo di sicurezza per la conservazione gestito da spark.databricks.delta.retentionDurationCheck.enabled.

Se si tenta di usare un periodo di conservazione inferiore a sette giorni, questo controllo di sicurezza avvisa l'utente a meno che non si disabiliti in modo esplicito il controllo nella configurazione di Spark.

Prestare particolare attenzione prima di disabilitare questa protezione. Una breve finestra di conservazione può rimuovere file che richiedono carichi di lavoro simultanei o scenari di ripristino.

Ad esempio, questi comandi richiedono un periodo di conservazione di un giorno:

VACUUM schema_name.table_name RETAIN 24 HOURS

Se l'ambiente mantiene attivo il controllo di sicurezza, il runtime segnala le impostazioni di conservazione impostate a meno di sette giorni.

Comprendere l'impatto sul viaggio nel tempo

Il viaggio in tempo delta Lake consente di eseguire query sulle versioni precedenti della tabella, purché i file cronologici richiesti esistano ancora.

VACUUM rimuove i file meno recenti rispetto alla finestra di conservazione, quindi rimuove anche i file di dati necessari per il viaggio di tempo oltre tale finestra. Dopo aver vuoto tali file, non è più possibile eseguire query su tali versioni precedenti.

Prima di ridurre il periodo di conservazione, decidi di quanto accesso ai dati storici necessitano i tuoi carichi di lavoro, le verifiche, le attività di debug e i processi di ripristino. Per altre informazioni, vedere Viaggi in tempo.

Comprendere l'impatto sui vettori di eliminazione

I vettori di eliminazione possono contrassegnare le righe come eliminate senza riscrivere immediatamente ogni file di dati interessato. A causa di questo comportamento, i file che sembrano vecchi potrebbero ancora far parte dello stato della tabella attiva.

VACUUM non rimuove i file a cui viene ancora fatto riferimento, compresi i file che rimangono validi perché i metadati del vettore di eliminazione fanno ancora riferimento a tali file. Se si utilizzano vettori di eliminazione e successivamente si riorganizza o si ottimizza la tabella, ulteriori file obsoleti potrebbero diventare idonei per VACUUM una volta completate tali modifiche.

Per riscrivere fisicamente i dati interessati dai vettori di eliminazione, vedere Tabelle DELTA REORG.

Seguire le migliori pratiche

Usa queste indicazioni quando esegui VACUUM in Fabric:

  • Eseguire VACUUM dopo OPTIMIZE per rimuovere i file di pre-compattazione che non sono più necessari.
  • Non impostare il periodo di conservazione al di sotto di sette giorni, a meno che tu non comprenda chiaramente gli effetti su time travel, operazioni di lettura e scrittura e ripristino.
  • Pianificate operazioni VACUUM regolari nelle pipeline di produzione in modo che i file obsoleti non si accumulino in OneLake.
  • Prima di abbreviare la conservazione, decidere i requisiti di tempo di viaggio.
  • Usare DRY RUN per prima cosa quando si desidera verificare quali file stanno per essere rimossi.

Per informazioni sulla manutenzione in tutto Fabric, vedere Panoramica della manutenzione delle tabelle e Manutenzione delle tabelle di Lakehouse.

Capire cosa VACUUM non rimuove

VACUUM rimuove i file di dati obsoleti, ma non elimina i file di log Delta nella _delta_log cartella .

La pulizia del log Delta segue il criterio di conservazione di checkpoint e log ed è separata da VACUUM.