Ćwiczenie 10 - 11 : Indeksy, optymalizacja zapytań, badanie planów

Transkrypt

Ćwiczenie 10 - 11 : Indeksy, optymalizacja zapytań, badanie planów
[email protected]
Grupa 1.2 (Piątek 10:15 - 12:00)
19.05.2011
Ćwiczenie 10 - 11 : Indeksy, optymalizacja zapytań, badanie planów wykonania
Materiały: Oracle® Database Performance Tuning Guide 11g Release 1 (11.1), Part IV
Optimizing SQL Statements. W szczególności rozdziały:
● Chapter 11, "The Query Optimizer"
● Chapter 12, "Using EXPLAIN PLAN"
● Chapter 13, "Managing Optimizer Statistics"
● Chapter 14, "Using Indexes and Clusters"
● Chapter 19, "Using Optimizer Hints"
Link do dokumentacji online: http://download.oracle.com/docs/cd/B28359_01/server.111/
b28274/part4.htm#g996847
Wynikiem pracy powinno być sprawozdanie zawierające komentarz, analizę oraz wnioski z
wykonania poniższych punktów:
1. Tryby pracy optymalizatora
Zapoznać się z trybami pracy optymalizatora kosztowego w Oracle 11g.
Zmienić tryb z pomocą polecenia:
ALTER SESSION SET OPTIMIZER_MODE = TRYB;
Uwaga: Pamiętaj o wpływie tego polecenia na dalszą część ćwiczeń.
W szczególności tryb FIRST_ROWS. Należy odpowiednio dobrać tryb do
wykonywanego ćwiczenia.
2. Badanie planów wykonania
Dla zaprojektowanej na poprzednich zajęciach bazy danych, wybrać 2 różne zapytania
wykonane w ramach ćwiczenia nr. 5 ( nie banalne! - join, selekcja where, group by) i wykonać
dla nich plan zapytania. Przeprowadzić analizę rezultatu, opisać wybrane przez CBO operacje,
zwrócić uwagę na koszty.
3. Indeksy
Dla tabel uczestniczących w zapytaniach z poprzedniego punktu zaindeksować odpowiednie pola
w celu osiągnięcia lepszych planów wykonania. Spróbować, jeśli to możliwe, wykorzystać indeks
bitmapowy/ funkcyjny. Przeprowadzić analizę zmian planu wykonani w odniesieniu do punktu 2.
4. Wskazówki dla optymalizatora zaptań (Optimizer Hints)
Dla optymalizatora zapytań wraz z zapytaniem możemy podać odpowiednie wskazówki co do
wykonania. Wykonać modyfikację planów zapytania z użyciem wskazówek dla:
- dostępu do danych: FULL, INDEX, INDEX_FFS(*)
- złączeń: USE_NL, USE_MERGE, USE_HASH
Wyjaśnić na czym polegają powyższe typy złączeń, jakie są różnice i kiedy który
powinien być stosowany.
- zrównoleglenia przetwarzania: PARALLEL
5. Statystyki
Statystyki są wykorzystywane przez optymalizator do wbrania najlepszego planu wykonania dla
zapytania. Aby zobaczyć odpowiednie statystyki, można skorzystać z perspektyw:
ALL_TABLES
ALL_OBJECT_TABLES
ALL_TAB_STATISTICS
ALL_TAB_COL_STATISTICS
ALL_TAB_HISTOGRAMS
ALL_HISTOGRAMS
ALL_TAB_COLS
ALL_COL_GROUP_COLUMNS
ALL_INDEXES
ALL_IND_STATISTICS
( lub z prefiksem USER_ - dla ograniczenia obiektów do schematu aktualnie zalogowanego
użytkownika).
Należy zapoznać się z zawartością tabel oraz podstawowymi statystykami w nich zbieranymi.
Dla wybranej przez siebie tabeli, wstawić relatywnie dużo danych ( ok. 10 tyś. rekordów najłatwiej z wykorzystaniem pętli for w PL/SQL). Zbadaj koszt kiedy tabela ma obliczonę
statystyki oraz kiedy ich brakuje. W tym celu użyj procedur pakietu DBMS_STATS:
DBMS_STATS.GATHER_TABLE_STATS/dbms_stats.delete_table_stats.
6. Statystyki - Histogram
Przeprowadzić analizę histogramu dla wybranej kolumny w tabeli, dla której zostały zebrane
statystyki (perspektywa USER_HISTOGRAMS). Opisać rezultat.

Podobne dokumenty