Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

PL/SQL optimalizace stored procedures v Oracle

14. 02. 2012 1 min čtení CORE SYSTEMSdata

Nocni batch prepocitava pojistne pro 800 000 smluv — trva 6 hodin. Nocni okno je 4 hodiny. DBMS_PROFILER ukazal: row-by-row processing, COMMIT uvnitr smycky, zadne BULK operace.

BULK COLLECT a FORALL

BULK COLLECT nacte data do kolekce najednou. FORALL provede DML v jednom roundtripu. LIMIT 10000 pro rozumnou spotrebu pameti. COMMIT po davce misto po radku.

SQL misto PL/SQL

Funkce prepsana jako SQL CASE expression. Cely batch nahrazen jednim UPDATE prikazem. 800 000 context switchu eliminovano. Vysledek: 6 hodin na 8 minut.

Parallel DML

PARALLEL hint zkratil batch na 3 minuty. Pozor — vyzaduje exkluzivni zamek na tabulku.

Pouceni

Row-by-row je hlavni performance killer v PL/SQL. Preferujte BULK operace nebo ciste SQL. Profilujte — nehádejte bottleneck.

pl/sqloracleperformancedatabase