Riorganizzare le tabelle Delta con REORG

Usare il REORG comando quando è necessario riscrivere parte di una tabella Delta per un obiettivo di manutenzione specifico. In Fabric, REORG riorganizza il layout fisico di una tabella riscrivendo i file di dati o aggiornando i metadati della tabella, a seconda dell'opzione scelta.

REORG è diverso dalla compattazione dei file di routine. È destinato a scenari quali la rimozione fisica delle righe che i vettori di eliminazione hanno contrassegnato come eliminate.

Operazioni di REORG

REORG TABLE riscrive lo stato della tabella per un'operazione di manutenzione definita.

  • APPLY (PURGE) riscrive i file di dati interessati in modo che le righe eliminate temporaneamente tramite vettori di eliminazione vengano fisicamente rimosse dai file Parquet sottostanti.

Usare REORG quando è necessario un risultato di riscrittura specifico, non solo più piccoli o meno file.

Usare PURGE per rimuovere fisicamente le righe eliminate temporaneamente

I vettori di eliminazione consentono a Delta Lake di contrassegnare immediatamente le righe come eliminate senza riscrivere immediatamente i file Parquet originali. Questo comportamento mantiene efficienti le operazioni di eliminazione, ma i dati delle righe eliminati sono ancora presenti nei file fisici fino a quando non vengono riscritti.

Quando si esegue REORG TABLE ... APPLY (PURGE), Fabric riscrive i file interessati e rimuove le righe eliminate in modo soft dai file Parquet attivi. Al PURGE termine, le righe eliminate vengono effettivamente rimosse dai file riscritti.

Note

PURGE non è in genere necessario come passaggio di manutenzione separato. OPTIMIZE elimina automaticamente i file in cui viene fatto riferimento a più di 5% di record dai vettori di eliminazione durante la compattazione. Usa PURGE nei casi in cui devi controllare esplicitamente quando le righe eliminate logicamente vengono rimosse fisicamente.

Questa opzione è utile quando:

  • Si dispone di requisiti di conformità o GDPR ed è necessario rimuovere fisicamente i dati in base a una pianificazione specifica.
  • Si desidera forzare l'eliminazione dei file che scendono al di sotto della soglia del 5% utilizzata da OPTIMIZE.

Esaminare la sintassi

Utilizzare gli esempi seguenti in un notebook Fabric.

Rimuovere definitivamente da una tabella le righe eliminate temporaneamente

REORG TABLE table_name APPLY (PURGE)

Eliminare definitivamente le righe eliminate temporaneamente solo per i dati corrispondenti

REORG TABLE table_name WHERE predicate APPLY (PURGE)

Usare una WHERE clausola quando si desidera specificare partizioni specifiche o una sezione di dati più piccola.

REORG TABLE sales.orders
WHERE order_date = DATE '2026-05-01'
APPLY (PURGE)

Scegliere REORG o OPTIMIZE

REORG e OPTIMIZE risolvono problemi diversi.

  • OPTIMIZE esegue la compattazione dei contenitori. Consolida i file di piccole dimensioni in file di dimensioni maggiori per migliorare l'efficienza dell'analisi.
  • REORG ... APPLY (PURGE) rimuove fisicamente le righe che i vettori di eliminazione hanno contrassegnato come eliminate.

È possibile usare entrambi i comandi insieme. Ad esempio, è possibile eseguire REORG ... APPLY (PURGE) per rimuovere fisicamente i dati eliminati, quindi eseguire OPTIMIZE per migliorare il layout dei file.

Comprendere i vettori di eliminazione

I vettori di eliminazione sono strutture di metadati che contrassegnano le righe come eliminate senza riscrivere immediatamente i file Parquet che contengono tali righe. I lettori rispettano i vettori di eliminazione, quindi le righe eliminate non vengono visualizzate nei risultati della query, ma i byte rimangono ancora in archiviazione fino a quando non si verifica una riscrittura.

REORG ... APPLY (PURGE) è il passaggio che rimuove fisicamente tali righe dai file Parquet riscritti.

Eseguire REORG in Fabric

Esegui REORG da esperienze basate su Spark in Fabric, ad esempio:

  • Notebook di Fabric
  • Definizioni dei job Spark

Non eseguire REORG dall'endpoint di analisi SQL. REORG è un comando di manutenzione di Spark SQL per le tabelle Delta.

Seguire le migliori pratiche

  • Eseguire PURGE solo quando si ha una necessità specifica, ad esempio i requisiti di conformità. OPTIMIZE elimina automaticamente i file a cui fanno riferimento più di 5% di record dai vettori di eliminazione, quindi la manutenzione di routine in genere non richiede un passaggio separato PURGE .
  • Eseguire PURGE prima di VACUUM quando è necessario rimuovere fisicamente i dati eliminati per i requisiti di conformità o GDPR.
  • Usare WHERE i predicati per definire come destinazione partizioni specifiche quando non è necessario riscrivere la tabella completa.
  • Usa UPGRADE UNIFORM quando hai bisogno dei lettori Iceberg, ma tieni conto dei metadati aggiuntivi mantenuti da UniForm.
  • Trattare REORG e OPTIMIZE come operazioni di manutenzione complementari, non intercambiabili.