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.
I vettori di eliminazione consentono a Delta Lake di contrassegnare le singole righe come eliminate senza riscrivere l'intero file Parquet che contiene tali righe. In Microsoft Fabric questa funzionalità consente di gestire le modifiche a livello di riga in modo più efficiente, in particolare quando si utilizzano tabelle Delta di grandi dimensioni.
Anziché sostituire un file di dati completo per un piccolo eliminazione o aggiornamento, Delta Lake archivia separatamente le informazioni di eliminazione a livello di riga. I motori di query usano quindi tali metadati per ignorare le righe interessate.
Cosa fanno i vettori di eliminazione
Un vettore di eliminazione è un file complementare per un file di dati di tabella Delta. Registra quali posizioni delle righe in un file Parquet non sono più valide.
Questa progettazione consente l'eliminazione temporanea a livello di riga per consentire aggiornamenti, merge ed eliminazioni più veloci:
- Il file Parquet originale resta nella posizione originale.
- Delta scrive un piccolo file vettoriale di eliminazione.
- I lettori ignorano le righe contrassegnate in fase di query.
Poiché il file di dati non richiede una riscrittura immediata, i vettori di eliminazione sono particolarmente utili quando una modifica influisce su una piccola percentuale di dati in un file di grandi dimensioni.
Funzionamento dei vettori di eliminazione
Quando si esegue DELETE, UPDATEo MERGE, Delta identifica le righe che devono essere modificate.
Se i vettori di eliminazione sono abilitati, Delta può registrare immediatamente le righe interessate in un vettore di eliminazione anziché riscrivere immediatamente il file Parquet completo.
Il processo funziona come segue:
- Delta individua le righe nel file Parquet di destinazione che sono eliminate o sostituite.
- Delta scrive un file vettoriale di eliminazione che contrassegna tali righe specifiche come non valide.
- Il file Parquet originale rimane intatto in OneLake.
- I lettori di Fabric consultano il vettore di eliminazione e saltano le righe contrassegnate durante l'esecuzione della query.
Per UPDATE e MERGE, Delta scrive ancora nuove righe quando necessario. Il vantaggio principale è che può evitare di riscrivere righe non modificate nel file originale.
Perché i vettori di eliminazione sono utili
I vettori di eliminazione migliorano l'efficienza di scrittura per i carichi di lavoro con modifiche frequenti e di piccola entità a livello di riga.
Aiutano perché:
- Velocizzare le operazioni
DELETE,UPDATEeMERGEche interessano relativamente poche righe - Ridurre l'amplificazione della scrittura perché Delta Lake non richiede la riscrittura di un intero file Parquet per ogni piccola modifica
- I/O inferiore per i file di grandi dimensioni quando viene modificato solo un piccolo subset di righe
Questo comportamento si adatta spesso bene alle dimensioni a variazione lenta, alle pipeline di aggiornamento o inserimento, ai processi di pulizia dei dati e alle tabelle operative che ricevono correzioni frequenti.
Abilitare i vettori di eliminazione
Note
I vettori di eliminazione sono abilitati per impostazione predefinita a partire da Fabric runtime Spark 2.0 (Delta 4.1).
È possibile abilitare i vettori di eliminazione a livello di tabella impostando la proprietà Tabella Delta.
CREATE TABLE sales.orders (
order_id BIGINT,
customer_id BIGINT,
order_status STRING,
order_date DATE
)
USING DELTA
TBLPROPERTIES ('delta.enableDeletionVectors' = true)
È anche possibile abilitare i vettori di eliminazione in una tabella esistente.
ALTER TABLE sales.orders
SET TBLPROPERTIES ('delta.enableDeletionVectors' = true)
Abilitare i vettori di eliminazione per tutte le nuove tabelle in una sessione
Per abilitare i vettori di eliminazione per impostazione predefinita per ogni nuova tabella creata durante una sessione Spark, impostare la configurazione a livello di sessione:
Qualsiasi tabella creata dopo l'applicazione di questa impostazione ha abilitato vettori di eliminazione senza dover specificare singolarmente la proprietà della tabella.
Comprendere i compromessi delle prestazioni
I vettori di eliminazione in genere rendono le scritture più veloci, ma introducono un compromesso in fase di lettura.
Prestazioni di scrittura
Le scritture sono spesso più veloci perché Delta Lake può evitare una riscrittura completa dei file quando vengono modificate solo alcune righe.
Prestazioni di lettura
Le letture possono avere un sovraccarico minore perché il motore deve controllare i metadati del vettore di eliminazione e ignorare le righe non valide durante l'analisi dei file di dati.
Per molti carichi di lavoro, questo sovraccarico è ridotto rispetto al risparmio di scrittura. Tuttavia, se i vettori di eliminazione si accumulano nel tempo, i controlli dei metadati aggiuntivi possono rallentare le letture.
Usare REORG PURGE per rimuovere i vettori di eliminazione accumulati
OPTIMIZE elimina automaticamente i file in cui viene fatto riferimento a più di 5% di record dai vettori di eliminazione, quindi la compattazione di routine gestisce in genere la pulizia del vettore di eliminazione senza un passaggio separato.
Usare REORG TABLE ... APPLY (PURGE) quando è necessario un controllo esplicito su quando le righe eliminate temporaneamente vengono rimosse fisicamente, ad esempio per soddisfare i requisiti di conformità o GDPR o per forzare l'eliminazione dei file che superano la soglia di 5% che OPTIMIZE usa.
PURGE riscrive i file di dati interessati, rimuove le righe eliminate soft dai file Parquet attivi ed elimina i file vettoriali di eliminazione per tali file riscritti.
Esegui PURGE quando hai la necessità specifica di rimuovere forzatamente le righe eliminate in modo soft sotto la soglia del 5% oppure quando i requisiti di conformità richiedono la rimozione fisica secondo una pianificazione definita. Per la maggior parte dei carichi di lavoro, OPTIMIZE è sufficiente per gestire automaticamente la pulizia del vettore di eliminazione.
Confrontare REORG, OPTIMIZE e VACUUM
Questi comandi interagiscono, ma eseguono processi diversi.
RIORGANIZZAZIONE TABELLA ... APPLICA (ELIMINAZIONE)
REORG TABLE ... APPLY (PURGE) riscrive i file interessati e rimuove fisicamente solo le righe eliminate temporaneamente prima.
OTTIMIZZARE
OPTIMIZE compatta i file di piccole dimensioni per migliorare l'efficienza dell'analisi. Elimina automaticamente anche i file in cui viene fatto riferimento a più di 5% di record dai vettori di eliminazione. Questo comportamento rende OPTIMIZE il comando di manutenzione principale per la maggior parte della pulizia vettoriale di eliminazione.
VUOTO
VACUUM rimuove i file senza riferimenti precedenti alla soglia di conservazione. Questa pulizia può includere file vettoriali di eliminazione dopo altre operazioni che li rendono obsoleti.
Un modello comune è:
- Usare i vettori di eliminazione per rendere efficienti le scritture a livello di riga.
- Eseguire
OPTIMIZEregolarmente per compattare i file e eliminare automaticamente i vettori di eliminazione al di sopra della soglia di 5%. - Eseguire
REORG TABLE ... APPLY (PURGE)solo quando è necessario rimuovere forzatamente le eliminazioni soft al di sotto della soglia o per motivi di conformità. - Eseguire
VACUUMpiù tardi per rimuovere i file non referenziati che hanno superato il periodo di conservazione.
Verificare la compatibilità del protocollo
I vettori di eliminazione richiedono la versione 3 del reader Delta e la versione 7 del writer.
Dopo aver abilitato i vettori di eliminazione in una tabella, i lettori meno recenti che non supportano vettori di eliminazione non possono leggere correttamente la tabella. Prima di abilitare la funzionalità su larga scala, verificare che ogni motore e runtime che legga la tabella supporti il protocollo Delta richiesto.
È possibile esaminare i metadati correlati al protocollo usando comandi come DESCRIBE DETAIL e esaminando le proprietà della tabella nel log Delta.
Seguire le migliori pratiche
- Abilitare i vettori di eliminazione per le tabelle con eliminazioni, aggiornamenti o merge frequenti.
-
OPTIMIZEelimina automaticamente i file con più di 5% di record a cui fanno riferimento i vettori di eliminazione, quindi un passaggio separatoPURGEnon è necessario. - Usare
REORG TABLE ... APPLY (PURGE)solo quando è necessario un controllo esplicito, ad esempio i requisiti di conformità o l'eliminazione forzata al di sotto della soglia di 5%. - Usare
VACUUMper pulire i file vettoriali di eliminazione obsoleti solo dopo essere diventati non referenziati e precedenti alla soglia di conservazione. - Verificare che tutti i lettori supportino reader versione 3 e writer versione 7 o il protocollo del checkpoint v2, prima di abilitare i vettori di eliminazione nelle tabelle condivise.