/ / Java - Vylepšenia výkonu DB2 - java, výkon, db2

Java - Vylepšenia výkonu DB2 - java, výkon, db2

Máme príkaz SELECT, ktorý bude trvať približne. 3 sekúnd na vykonanie. Tento dopyt DB2 voláme vo vnútri vnorenej slučky While.

ex:

Kým (hashmap1.hasNext ()) { zatiaľ čo (hashmap2.hasNext ()) { SQL Query } }

Problém je, že vonkajšia slučka bude spustenápribližne. 1200 krát a vnútorná Keď sa slučka vykoná 200 krát. Čo znamená, že SQL sa nazýva 1200 * 200 = 240 000 krát. Približne. každá iterácia okruhu Outer While bude trvať 150 sekúnd. Takže 1200 * 150 sekúnd = 50 hodín.

Môžeme si dovoliť len asi 12-15 hodín, než začneme ďalší proces.

Existuje nejaký spôsob, ako tento proces urobiť rýchlo? Všetky nové technológie, ktoré nám môžu pomôcť pri získavaní týchto záznamov rýchlejšie z DB2.

Akákoľvek pomoc by bola vysoko cenená.

Poznámka: Už sme sa zaoberali všetkými možnými spôsobmi, ako znížiť počet opakovaní.

odpovede:

4 pre odpoveď č. 1

Znie mi to, akoby ste sa pokúšali používať strednú vrstvu pre niečo, čo je vhodnejšie pre samotnú databázu. Je to klasický problém s dotazom "N + 1".

Prepísal (a) túto logiku, aby sa spustil úplne nadatabázy ako správne indexované JOIN. To, že nielenže obmedzíte všetky tieto siete tam a späť, ale prinesie optimalizáciu databázy a ušetrí vám tak náklady spojené so spracovaním všetkých údajov na strednú vrstvu.