konto usunięte
Temat: Wydłużony czas wykonywania zapytania.
Witam,Przeprowadzam w tej chwili testy, w których wykorzystuję dwa narzędzia Oracle:
- Bazę 11g
- Serwer Complex Event Processing
Korzystam ze schematu kostki dołączonego do 11g o nazwie SH ( Sales History ), który wzbogaciłem o sekwencje, by móc ładować do niej dane. Przed rozpoczęciem testów, które w dużym uproszczeniu polegają na odpytywaniu kostki i na podstawie określonych kryteriów co pewien czas ładowaniu do niej małych porcji danych napotkałem na pewnie problem.
W zbiorze kilkuset zapytań odpytujących kostkę o nie zmienionych danych czas wykonania jest dość przewidywalny i załóżmy, że nie przekracza 3 sekund. Wiadomo, że jeżeli w odpytywanie wplotę aktualizacje ( które są rozrzucone losowo po całym przedziale czasu, więc ingerują we wszystkie partycje ) to czas odpowiedzi wzrośnie, tylko pytanie czy ma prawo wzrosnąć 50 krotnie z powodu kilku tysięcy nowych rekordów?
Zapytanie o którym mowa do najsprytniejszych nie należy i jest to zwykłe złączenie kilku tabel z których jedna ma 1mln rekordów.
SELECT SUM(s.quantity_sold) AS quantity_sum,
TO_CHAR(SUM(prod_list_price * s.quantity_sold),'$999,999,999.00') AS total_sold,
country_iso_code ,
country_region
FROM sales s,
products p ,
customers cs ,
countries c
WHERE
s.cust_id =cs.cust_id
AND s.prod_id = p.prod_id
AND cs.country_id = c.country_id
GROUP BY country_iso_code,
country_region
ORDER BY total_sold DESC
Zastanawia mnie tylko dlaczego czas odpowiedzi wzrósł do 75-100 sekund i tyczy się to tylko i wyłącznie tego zapytania, gdzie reszta w skrajnych przypadkach wykonuje się do 8 sekund.
Domyślam się, że problem to klasyczny PEBKAC i brakuje mi odpowiednich ustawień kostki. Jak ktoś ma jakieś sugestie to byłbym wdzięczny.
Pozdrawiam,
Rafał.