Jestem optymalizatorem DBA/wydajności Sybase i zostałem poproszony o sprawdzenie wydajności niektórych zapytań SQL w Oracle i zobaczenie, jakie są problemy i dlaczego jest wolny. Czy istnieje plan pokazowy podobny do Sybase? Muszę uzyskać liczbę fizycznych wejść/wyjść i logicznych wejść/wyjść, skanów tabel i indeksów, których używa zapytanie lub procedura składowana.

Kiedyś używałem Embarcadero i już go nie mam.

1
Saro Khatchatourian 21 lipiec 2011, 19:51
Umieść swoje pytanie w tytule; nie przedstawiaj się nam w tytule.
 – 
Jonathan Leffler
21 lipiec 2011, 19:53

2 odpowiedzi

Najlepsza odpowiedź

Plan wyjaśnienia i/lub AutoTrace to odpowiednik Oracle, który zapewni możliwy plan wykonania, z którego Oracle skorzysta w przypadku wykonania zapytania.

W SQLPLUS możesz to zrobić..

SQL> set autotrace traceonly;

SQL> select * from scott.emp;

14 rows selected.

Execution Plan
----------------------------------------------------------
Plan hash value: 3956160932

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    14 |   518 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| EMP  |    14 |   518 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          8  consistent gets
          0  physical reads
          0  redo size
       1415  bytes sent via SQL*Net to client
        381  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
         14  rows processed

Oto różne inne opcje dostępne w zależności od poziomu szczegółowości i konkretnego scenariusza.

http://www.oracle-base.com/articles/10g/SQLTrace10046TrcsessAndTkprof10g.php

4
Rajesh Chamarthi 5 grudzień 2011, 23:11
Czy jest miejsce, w którym mógłbym o tym przeczytać? Jakieś próbki? Tak jak chcę pokazać plany SELECT * FROM a, b gdzie a.field = b.field. Plan śledzenia i zapytania
 – 
Saro Khatchatourian
21 lipiec 2011, 19:56
Saro - Zaktualizowałem mój post powyżej, zanim zobaczyłem Twój komentarz :). Jeśli chcesz prześledzić całą sesję (może to być twoje pełne wykonanie jednej procedury), spójrz na link, który podałem poniżej.
 – 
Rajesh Chamarthi
21 lipiec 2011, 19:59
Dostałem komunikat „Opcja tylko śledzenia nie jest obecnie obsługiwana”. Jakieś przemyślenia na ten temat?
 – 
Saro Khatchatourian
21 lipiec 2011, 20:50
Której wersji Oracle i SQLPLUS używasz ..? Czy robisz to w SQLPLUS lub innym narzędziu?
 – 
Rajesh Chamarthi
21 lipiec 2011, 21:02
Programista SQL w wersji 3.0.04
 – 
Saro Khatchatourian
21 lipiec 2011, 21:17

Nie jestem pewien, czy wszystko to jest w nim dostępne, ale Oracle SQL Developer umożliwia umieszczenie zapytania i kliknięcie przycisku Wyjaśnij plan, aby zobaczyć plan wykonania. Obejmuje to, co ma zamiar zrobić i wszelkie indeksy, których używa.

To darmowe narzędzie, więc spróbuj. :)

1
Tridus 21 lipiec 2011, 19:55
Mam programistę sql. Nie wiedziałem, że możesz to zrobić. Więc jak mam to zrobić dokładnie. Umieść mój kod i popchnij które dno/opcje? Dzięki
 – 
Saro Khatchatourian
21 lipiec 2011, 20:52
Umieść zapytanie w oknie poleceń u góry arkusza roboczego. Jednym z przycisków jest Wyjaśnij Plan. W moim egzemplarzu jest to czwarty przycisk w arkuszu.
 – 
Tridus
21 lipiec 2011, 20:59
Ponadto - możesz użyć linku, który zamieściłem, aby uzyskać aktualną wersję. Wersja 3 (obecna) jest znacznie bardziej rozbudowana niż wersja 1 klienta, który Oracle dostarcza z niektórymi swoimi rzeczami.
 – 
Tridus
21 lipiec 2011, 21:13