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.
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
OPTIMIZEha 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
Vuoto una tabella con una soglia di conservazione personalizzata
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:
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
VACUUMdopoOPTIMIZEper 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
VACUUMregolari 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 RUNper 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.