1. Glossario/

Parallel DML

Parallel DML (Oracle Parallel Execution)

Il Parallel DML è la funzionalità di Oracle che distribuisce le operazioni di scrittura — INSERT, UPDATE, DELETE e MERGE — su più processi slave coordinati da un processo query coordinator. A differenza del Parallel Query, che è attivo per default sulle tabelle configurate, il Parallel DML richiede un’abilitazione esplicita a livello di sessione prima che gli hint vengano rispettati.

Come funziona #

L’abilitazione avviene con un comando DDL sulla sessione corrente:

ALTER SESSION ENABLE PARALLEL DML;

Solo dopo questo comando gli hint /*+ PARALLEL(tabella, grado) */ producono effetto sulle operazioni DML. Senza l’abilitazione, Oracle ignora silenziosamente gli hint senza restituire errori o warning, rendendo il problema difficile da diagnosticare.

INSERT /*+ PARALLEL(target_table, 8) */ INTO target_table
SELECT * FROM staging_table;

Ogni processo slave lavora su una partizione logica dei dati. Al termine, il COMMIT consolida tutte le scritture. Prima del COMMIT la tabella target non è accessibile ad altre sessioni DML.

Quando si usa #

Il Parallel DML è indicato nei carichi ETL su Data Warehouse, dove si processano decine o centinaia di milioni di righe in finestre temporali ristrette. Il beneficio è proporzionale alla larghezza di banda I/O disponibile e al grado di parallelismo configurato sulla tabella o specificato nell’hint.

Limiti da tenere presenti:

  • Non applicabile su tabelle con trigger abilitati
  • Incompatibile con alcune tipologie di vincoli di integrità referenziale
  • Richiede che la sessione non abbia transazioni DML aperte prima dell’abilitazione