Optymalizacja zapytań
Transkrypt
Optymalizacja zapytań
Optymalizacja zapytań W instrukcji podane są odnośniki do podręcznika optymalizacji zapytań: „Oracle9i Database Performance Tuning Guide and Reference” Efektem ćwiczenia jest sprawozdanie zawierające analizy / statystyki / komentarze dotyczące poniższych punktów. 1. Tryb optymalizatora zapytań Zmienić tryb optymalizatora zapytań: ALTER SESSION SET OPTIMIZER_MODE = tryb; Lista dostępnych trybów optymalizatora omówiona na stronie 1‐7. Interesujące tryby to: Rule oraz Choose. Dla każdego trybu pracy optymalizatora zbadać koszt wykonania zapytań. W tym celu należy wykorzystać kilka zapytań stworzonych pod kątem aplikacji. Należy wykorzystać polecenie explain plan do zebrania informacji o badanych zapytaniach. W badaniu należy porównać podejścia: • bez użycia indeksów, • z indeksami. Wskazanie wykorzystania odpowiednich struktur następuje przez zastosowanie wskazówek (ang. hints) dla optymalizatora (str. 5‐1). Przykłady wykorzystania wskazówek: SELECT /*+ INDEX(patients sex_index) use sex_index because there are few male patients */ name, height, weight FROM patients WHERE sex = ’m’; SELECT /*+NO_INDEX(employees emp_empid)*/ employee_id FROM employees WHERE employee_id > 200; 2. Statystyki Optymalizator kosztowy do swoich oszacowań wykorzystuje statystyki (str. 3‐1). W celu zebrania statystyk dot. tabel i kolumn w przestrzeni tabel OE z automatycznym próbkowaniem należy użyć polecenia: EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS('OE',DBMS_STATS.AUTO_SAMPLE_SIZE); Statystyki dot. tabeli: EXECUTE DBMS_STATS.GATHER_TABLE_STATS('rbembeni', 'emp'); Uwuwanie statystyk: execute dbms_stats.delete_table_stats('rbembeni', 'emp'); Statistics on tables, indexes, and columns are stored in the data dictionary. To view statistics in the data dictionary, query the appropriate data dictionary view (USER, ALL, or DBA). These DBA_* views include the following: • • DBA_TABLES DBA_OBJECT_TABLES • • • • • • • • • • • • • • DBA_TAB_STATISTICS DBA_TAB_COL_STATISTICS DBA_TAB_HISTOGRAMS DBA_INDEXES DBA_IND_STATISTICS DBA_CLUSTERS DBA_TAB_PARTITIONS DBA_TAB_SUBPARTITIONS DBA_IND_PARTITIONS DBA_IND_SUBPARTITIONS DBA_PART_COL_STATISTICS DBA_PART_HISTOGRAMS DBA_SUBPART_COL_STATISTICS DBA_SUBPART_HISTOGRAMS 3. Koszt realizacji zapytań Zbadaj koszt realizacji zapytań dla tabel posiadających statystyki / nie posiadających statystyk. Wybierz w tym celu jedną tabelę, która posiada relatywnie dużo danych / stwórz tabelę z 4 kolumnami i 10 tys. rekordów. Załóż indeksy na każdej kolumnie tabeli. Zbadaj koszt wykonania zapytań dla tej tabeli (z indeksem vs. bez użycia indeksu).