1 Strojenie SQL w bazie OracleAutor: Marcin Malinowski
2 Agenda Rodzaje oracle’owych optymalizatorów Optymalizator regułowyOptymalizator kosztowy Wybór optymalizatora Kilka częstych błędów Plan zapytania Wskazówki optymalizatora zapytań Pytania
3 Rodzaje optymalizatorówOptymalizator regułowy (rule –based optimizer) Optymalizator (cost-based optimizer)
4 Optymalizator regułowyOparty na zestawie 20 reguł (tzw. „Złote reguły”) Brak czynników zewnętrznych (rozmiar tabeli, selektywność indeksów) Przykładowe reguły: 1. Rowid = constant 5.Kolumna z indeksem unikatowym = constant 20. Full scan tabeli
5 Optymalizator kosztowyBardziej wyrafinowany i elastyczny Działanie: Analiza składniowa Wszystkie plany zapytań Szacowanie kosztu Wybór najlepszego planu
6 Optymalizator kosztowy cd.Statystyki oraz metody ich zbierania: Analyze table Dbms_stats
7 Wybór optymalizatora Zdecydowanie kosztowy Dlaczego:Krótszy czas kodowania Programista nie musi znać reguł Większa uniwersalność, więcej produktów Regułowy nie rozwijany Wiele funkcji nie działa dla regułowego
8 Kilka częstych błędów Błędnie zapisane zapytania (bez indeksu)Brak indeksów Niepotrzebne sortowania Widoki oparte na widokach Zbyt wiele złączeń Błędne ustawienie konfiguracyjne
9 Plan zapytania Polecenie explain plan Przykłady Nested loopsHash_joins
10 Wskazówki optymalizatoraWykorzystanie wskazówek (ang. Hints) Przykłady wskazówek index(index_name, table_name) First_rows Full Use_hash
11 Pytania Dziękuję