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ł.

konto usunięte

Temat: Wydłużony czas wykonywania zapytania.

Rafał W.:
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.

Tak, ma prawo wzrosnąć. Robi to w momencie, gdy optymalizator zmieni plan zapytania na "bardziej optymalny" :)

Przynajmniej jedna z tabel "pachnie" tu full scanem. A dlaczego ? Bo nie ma żadnego warunku WHERE po jakiejkolwiek indeksowanej kolumnie. Pasowałoby hint dodać jakiś, ale jaki to nie zgadnę nie widząc tabel i indeksów. A może pomógłby jeszcze indeks na country_iso_code,country_region ... możliwości jest mnóstwo.

konto usunięte

Temat: Wydłużony czas wykonywania zapytania.

Krzysztof Pułapa:
Rafał W.:
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.

Tak, ma prawo wzrosnąć. Robi to w momencie, gdy optymalizator zmieni plan zapytania na "bardziej optymalny" :)

Przynajmniej jedna z tabel "pachnie" tu full scanem. A dlaczego ? Bo nie ma żadnego warunku WHERE po jakiejkolwiek indeksowanej kolumnie. Pasowałoby hint dodać jakiś, ale jaki to nie zgadnę nie widząc tabel i indeksów. A może pomógłby jeszcze indeks na country_iso_code,country_region ... możliwości jest mnóstwo.
Zauważyłem dużo odczytów dysku w statystykach ;) jak tylko odtworzy się baza to przetestuję ze zwiększoną ilością zasobów, która i tak będzie śmiesznie mała.

konto usunięte

Temat: Wydłużony czas wykonywania zapytania.

Krzysztof Pułapa:
...
Tak, ma prawo wzrosnąć. Robi to w momencie, gdy optymalizator zmieni plan zapytania na "bardziej optymalny" :)

Przynajmniej jedna z tabel "pachnie" tu full scanem. A dlaczego ?

Tak, z FULL SCAN miałeś jak najbardziej rację. Z tym, że czas wykonania bezpośrednio po odtworzeniu do SCN wynosił ok. 10 sekund ( Mój błąd bo wyklikałem te zapytanie bezmyślnie w Query Builder'rze, by uzyskać określony przypadek dostępu do kostki ). Po założeniu tylko jednego indeksu bitmapowego czas wykonania zmalał do 5 sec przy czystym cache. Te 100 sekund to problem zasobów, zbiór był za duży i z dysku korzystał.
Bo nie ma żadnego warunku WHERE po jakiejkolwiek indeksowanej kolumnie. Pasowałoby hint dodać jakiś, ale jaki to nie zgadnę nie widząc tabel i indeksów. A może pomógłby jeszcze indeks na country_iso_code,country_region ... możliwości jest mnóstwo.

Dziękuje za pomoc ;) temat do zamknięcia.

Następna dyskusja:

Czas wykonywania zapytania




Wyślij zaproszenie do