/ / Java - Udoskonalenia wydajności DB2 - java, performance, db2

Java - ulepszenia wydajności DB2 - java, performance, db2

Mamy instrukcję SELECT, która zajmie ok. 3 sekundy do wykonania. Wywołujemy tę kwerendę DB2 w zagnieżdżonej pętli While.

Dawny:

While (hashmap1.hasNext ()) { while (hashmap2.hasNext ()) { Zapytanie SQL } }

Problem polega na tym, że zewnętrzna pętla będzie wykonywanaokoło. 1200 razy i wewnętrzna pętla While wykona 200 razy. Co oznacza, że ​​SQL będzie nazywać się 1200 * 200 = 240 000 razy. Około. każda iteracja zewnętrzna Pętla trwa 150 sekund. Tak więc 1200 * 150 sekund = 50 godzin.

Możemy sobie pozwolić tylko na około 12-15 godzin, zanim rozpoczniemy następny proces.

Czy istnieje sposób na szybkie wykonanie tego procesu? Każda nowa technologia, która może nam pomóc w szybszym pobieraniu tych rekordów z DB2.

Każda pomoc będzie bardzo ceniona.

Uwaga: już przeanalizowaliśmy wszystkie możliwe sposoby zmniejszenia liczby iteracji.

Odpowiedzi:

4 dla odpowiedzi № 1

Wydaje mi się, że próbujesz użyć środkowej warstwy dla czegoś, do czego lepiej pasuje sama baza danych. Jest to klasyczny problem z zapytaniem "N + 1".

Naprawię tę logikę, aby wykonać całkowicie nabaza danych jako właściwie indeksowane JOIN. To nie tylko ograniczy tę sieć do iz powrotem, ale także przyniesie optymalizator bazy danych i pozwoli zaoszczędzić na kosztach przetwarzania wszystkich danych w warstwie środkowej.