Ein nächtlicher Batch berechnet Versicherungsprämien für 800.000 Verträge neu — das dauert 6 Stunden. Das Nachtfenster beträgt 4 Stunden. DBMS_PROFILER enthüllte: Zeilenweise Verarbeitung, COMMIT innerhalb einer Schleife, keine BULK-Operationen.
BULK COLLECT und FORALL¶
BULK COLLECT lädt Daten auf einmal in eine Collection. FORALL führt DML in einem einzigen Roundtrip aus. LIMIT 10000 für vertretbaren Speicherverbrauch. COMMIT nach jedem Batch statt nach jeder Zeile.
SQL statt PL/SQL¶
Eine Funktion als SQL-CASE-Ausdruck umgeschrieben. Der gesamte Batch durch ein einzelnes UPDATE-Statement ersetzt. 800.000 Context Switches eliminiert. Ergebnis: von 6 Stunden auf 8 Minuten.
Parallel DML¶
Der PARALLEL-Hint reduzierte den Batch auf 3 Minuten. Vorsicht — dies erfordert eine exklusive Sperre auf die Tabelle.
Erkenntnisse¶
Zeilenweise Verarbeitung ist der größte Performance-Killer in PL/SQL. Bevorzugen Sie BULK-Operationen oder reines SQL. Profilen Sie — raten Sie nicht beim Engpass.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns