Oracle kann DML-Operationen parallelisieren. Das funktioniert bei UPDATE und DELETE-Anweisungen nur, wenn die entsprechende Tabelle partitioniert ist. Einfache INSERT-Anweisungen können nicht parallelisiert werden. Nur “INSERT INTO tab SELECT * FROM tab2“-Anweisungen können auch ohne Partitionierung parallelisiert werden. Folgendes Beispiel zeigt das empfohlene Vorgehen:
ALTER SESSION ENABLE PARALLEL DML; INSERT /*+ PARALLEL (emp_big,4,1) */ INTO emp_big SELECT * FROM emp; COMMIT; ALTER SESSION DISABLE PARALLEL DML;
Allerdings hat die Parallelisierung einen Nachteil. Leider erfordert die Aufspaltung in mehrere Worker-Threads einen gewissen Overhead, so dass man nicht immer mit dem PARALLEL-Hint schneller ist. Weiterhin funktionieren Parallel-Hints nur mit einer Enterprise Edition von Oracle.
Bisher keine Kommentare