Marek M.

Marek M. Nie ma rzeczy
niemożliwych, ale na
cuda trzeba dlużej
poc...

Temat: Wydajność zapytania

Mam małą zagwozdkę.

Na 1 serwerze mam 4 tablespace na których wykonuję jedno
i to samo zapytanie.

Zapytanie robi coś takiego:

select x.id, avg(x.a*y.b) from
(select id, a from x) x, -- w zakresie np. 5 dni zwraca 5000 wierszy
(select id, b from y) y -- w zakresie np. 5 dni zwraca 150 wierszy
where x.id=y.id group by x.id

zapytanie x wykonuje się 1 sek. , zapytanie y wykonuje sie 0.5 sek.
zapytanie liczące średnią - to powyżej, robi się 3 godziny. (danych do zmielenia jest 20 GB). Zapytanie puszczanie na pozostałych tablespaceach
wykonują się logicznie - np. do 3 sekun, przy czym jest tam
nawet więcej danych w jednym np. 60gb.

Explain plan jest taki sam we wszystkich schematach.

Przebudowałem indeksy, policzyłem statystki dla indeksów i tabel
i chwilowo nie wiem co dalej.

HELP !! :-)Marek Mikołajczyk edytował(a) ten post dnia 20.11.09 o godzinie 09:00

konto usunięte

Temat: Wydajność zapytania

Marek Mikołajczyk:
Explain plan jest taki sam we wszystkich schematach.

Ciężko w to uwierzyć.

Nie wiem jakim narzędziem dysponujesz, sprawdź jaki jest rzeczywisty plan podczas wykonywania zapytania. Może włącz trace sesji i porównaj.

konto usunięte

Temat: Wydajność zapytania

Wykonaj tracing i obu zapytan

SQL> alter session set timed_statistics = true;
SQL> alter session set statistics_level=ALL;
SQL> alter session set max_dump_file_size=unlimited;
SQL> alter session set tracefile_identifier='TERE_FERE';
SQL> alter session set events = '10046 trace name context forever, level 12 : 10053 trace name context forever, level 1';

>>> tutaj odpalasz swoje cudo <<<

SQL> alter session set events = '10046 trace name context off : 10053 trace name context off ';

a potem odpalasz tkprof i podziwiasz loga.
Marek M.

Marek M. Nie ma rzeczy
niemożliwych, ale na
cuda trzeba dlużej
poc...

Temat: Wydajność zapytania

Explain plan oglądałem oracle sql developerem.
Za chwilę zobaczę bo mi zwróci trace.

Dzieki.

Temat: Wydajność zapytania

Marek Mikołajczyk:
Explain plan oglądałem oracle sql developerem.
Za chwilę zobaczę bo mi zwróci trace.

Dzieki.

Witam,

Rozumiem ze jesli wolasz zapytanie z roznych tablespacow - wolane jest on na roznych tabelach. Najpierw przed analiza trace zastanowil bym sie czy wszystkie statystyki sa takie same a potem dopiero bral sie za analize plikow trace - aha i przy okazji pamietaj ze plan jaki pokazuje Ci SQL Developer czy cokolwiek innego to moze nie byc prawdziwy plan zapytania - calkiem swiezy post Tanel-a nt temat - http://blog.tanelpoder.com/2009/11/17/explain-plan-for...

pozdrawiam,
MarcinMarcin Przepiórowski edytował(a) ten post dnia 20.11.09 o godzinie 11:54

konto usunięte

Temat: Wydajność zapytania

Marcin Przepiórowski:
>aha i przy okazji
pamietaj ze plan jaki pokazuje Ci SQL Developer czy cokolwiek innego to moze nie byc prawdziwy plan zapytania

Pisałem o tym :P

--
DBA The Wredny

konto usunięte

Temat: Wydajność zapytania

Marek Mikołajczyk:
Za chwilę zobaczę bo mi zwróci trace.

No i no i ? ;)
Mariusz Masewicz

Mariusz Masewicz Prawie wszysko o
bazach danych Oracle
:-)

Temat: Wydajność zapytania

Krzysztof Pułapa:
Za chwilę zobaczę bo mi zwróci trace.
No i no i ? ;)

Zobaczyl i tak go to przerazilo, ze sie nie odzywa...
Marek M.

Marek M. Nie ma rzeczy
niemożliwych, ale na
cuda trzeba dlużej
poc...

Temat: Wydajność zapytania

W delegacje mnie wysłali. Zapytanie czeka otwarte w edytorze.
Marek M.

Marek M. Nie ma rzeczy
niemożliwych, ale na
cuda trzeba dlużej
poc...

Temat: Wydajność zapytania

Więc ... oba podzapytania wykonują się tak samo,
ale się inaczej łączą.

W zapytaniu nadrzędnym dodałem hint

/*+ ORDERED */

i zatrybiło.

Mówił wam ktoś, że poniekąd jesteście genialni. Dzięki.

P.S. explain plan w traceach był identyczny z tym w delveloperze

konto usunięte

Temat: Wydajność zapytania

A tak na przyszlość to zapoznaj się z zabawką -> SQLT (SQLTXPLAIN)

Metalink ID 215187.1.

Temat: Wydajność zapytania

Marek Mikołajczyk:
Więc ... oba podzapytania wykonują się tak samo,
ale się inaczej łączą.

W zapytaniu nadrzędnym dodałem hint

/*+ ORDERED */

i zatrybiło.

Mówił wam ktoś, że poniekąd jesteście genialni. Dzięki.

P.S. explain plan w traceach był identyczny z tym w delveloperze


Czekaj, czekaj - czepiam sie ale jak sie inaczej lacza to raczej nie wykonuja sie tak samo ;)

pozdrawiam,
Marcin
Marek M.

Marek M. Nie ma rzeczy
niemożliwych, ale na
cuda trzeba dlużej
poc...

Temat: Wydajność zapytania

Działa dobrze to:

GENERAL PLANS
***************************************
Considering cardinality-based initial join order.
***********************
Join order[1]: from$_subquery$_005[VUPS]#0 DRZ[D]#1
***************
Now joining: DRZ[D]#1
***************

a ślimaczy się to:

GENERAL PLANS
***************************************
Considering cardinality-based initial join order.
***********************
Join order[1]: DRZ[D]#0 from$_subquery$_005[VUPS]#1
***************
Now joining: from$_subquery$_005[VUPS]#1
***************

jak rozumiem w wersji szybko-szybko podzapytanie 2 łączy się z wynikiem pierwszego podzapytania, a w wersji wolno-wolno
podzapytanie 2 łączy się z ciałem pierwszego podzapytania.Marek Mikołajczyk edytował(a) ten post dnia 24.11.09 o godzinie 12:30

Następna dyskusja:

statystyki systemowe i... w...




Wyślij zaproszenie do