Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.

Podobne prezentacje


Prezentacja na temat: "WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka."— Zapis prezentacji:

1 WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka i slidey). 2.Lech Banachowski, Krzysztof Stencel, Systemy zarzadzania bazami danych, Wyd. PJWSTK, 2007.

2 Operatory relacyjne – Selekcja Selekcja podzbioru wierszy (klauzula WHERE). – Projekcja Pominięcie z wyniku niepotrzebnych kolumn (klauzula SELECT). – Złączenie Złączenie relacji (tabel), iloczyn kartezjański – Suma (UNION) Suma relacji (tabel), INERSECT, EXCEPT – Agregacja ( SUM, MIN, itd.) i grupowanie GROUP BY. * Relacja = tabela

3 Proste selekcje v Bez indeksu, nieposortowane: Koszt jest M = #stron w E. v Z indeksem na atrybucie selekcji: Użyj indeksu, wyznacz pozycje danych, przejdź do rekordów. –Najlepiej gdy indeks haszowany, selektywny, główny lub jednoznaczny dla selekcji równościowych oraz indeks pogrupowany dla selekcji zakresowych. SELECT * FROM Emp E WHERE E.Ename=KING -- lub E.Ename < 'C

4 Użycie indeksu do selekcji v Gdy indeks niepogrupowany koszt jest proporcjonalny do liczby znalezionych rekordów co może być więcej niż M - liczba stron w E. v Ulepszenie dla niepogrupowanych indeksów : 1. Wyznacz odpowiednie pozycje danych. 2. Posortuj je względem rid. 3. Sprowadzaj rekordy w takim porządku. Każda potrzebna strona zostanie sprowadzona tylko raz.

5 5 PJWSTK, SZB, Lech Banachowski STRATEGIE: TYLKO-INDEKS, PERSPEKTYWA ZMATERIALIZOWANA v W szczególnym przypadku gdy wszystkie elementy klauzul SELECT i WHERE należą do klucza wyszukiwania jednego indeksu – wystarczy przejść tylko ten indeks. v Czasami warto do klucza wyszukiwania dodać jedno lub więcej pól aby umożliwić zastosowanie tej metody np. do indeksu opartego na nazwisku pracownika możemy rozważyć dodanie zarobków i/albo numeru działu. v Zamiast indeksu można użyć perspektywy zmaterializowanej, szczególnie wtedy, gdy rozmiar wyniku jest większy. –W przeciwieństwie do indeksu stosując perspektywę zmaterializowaną zachowujemy w niej wszystkie pseudo-wartości NULL.

6 Projekcja v Bez DISTINCT – przepisanie. v Z DISTINCT – wymagane jest wyeliminowanie powtórzeń: –posortowanie; –haszowanie i eliminacja powtórzeń w ramach segmentów haszowania; –gdy atrybuty klauzuli SELECT tworzą indeks – wystarczy przejść tylko indeks ( strategia tylko indeks ). SELECT DISTINCT E.Job FROM Emp E

7 Operatory zbiorowe SELECT Deptno FROM Dept INTERSECT SELECT Deptno FROM Emp; = SELECT DISTINCT a.Deptno FROM Dept a INNER JOIN Emp b ON a.Deptno=b.Deptno; SELECT Deptno FROM Dept EXCEPT SELECT Deptno FROM Emp; v Przecięcie i iloczyn kartezjański relacji są specjalnymi przypadkami złączenia (z DISTINCT). v Union Distinct i Except są podobne do siebie. – Posortuj obie relacje (na kombinacji wszystkich atrybutów). – Dokonaj odpowiedniego scalenia wyników. – Alternatywa : Sortuj od razu razem obie relacje. – Zamiast sortowania można użyć haszowania.

8 Operacje agregacji ( AVG, MIN itd.) v Bez grupowania: – Na ogół trzeba rozważyć każdy wiersz. – Gdy jest indeks, którego klucz wyszukiwania obejmuje wszystkie atrybuty występujące w klauzulach SELECT i WHERE, wystarczy przejrzeć indeks ( strategia tylko-indeks ). v Z grupowaniem GROUP BY: – Posortuj względem wartości atrybutów GROUP BY, przejdź po rekordach w każdej grupie licząc wartości funkcji sumarycznych – w tym celu można użyć pogrupowany indeks na B+ drzewie. – Gdy jest indeks, którego klucz wyszukiwania obejmuje wszystkie atrybuty występujące w klauzulach SELECT, WHERE i GROUP BY, wystarczy przejrzeć indeks ( strategia tylko-indeks ). – Zamiast sortowania można użyć haszowania. v Perspektywa zmaterializowana jak w hurtowni danych.

9 9 PJWSTK, SZB, Lech Banachowski Strategia tylko-indeks v Jej zastosowanie wymaga aby wszystkie potrzebne do wyznaczenia wyniku zapytania wiersze tabeli były indeksowane. v Indeks(Ename, Comm) SELECT e.Ename, e.Comm FROM Emp e ORDER BY e.Ename; v Indeks(Comm) SELECT Avg(e.Comm) FROM Emp e; SELECT e.Ename FROM Emp e WHERE e.Comm IS NULL; SELECT e.Comm FROM Emp e WHERE e.Comm IS NOT NULL;

10 10 PJWSTK, SZB, Lech Banachowski Kolumny INCLUDE (SQL Server) Ułatwia korzystanie z metody Tylko indeks. Opcja INCLUDE dodaje dodatkowe kolumny do pozycji danych w indeksie nie połączonym z tabelą. SELECT Imie, Nazwisko, Data_ur FROM Osoby WHERE Nazwisko = 'Kowalski Indeks Osoby(Nazwisko), Kolumny INCLUDE: Imie i Data_ur. Wyszukiwanie po nazwisku, w pozycji danych odczytanie imienia i daty urodzenia bez sięgania do stron z rekordami. CREATE NONCLUSTERED INDEX Osoby_tylko_index ON Osoby(Nazwisko) INCLUDE (Imie, Data_ur)

11 Złączenia równościowe z jedną kolumną złączenia v Bezpośrednie podejście: generuj wszystkie kombinacje wierszy i stosuj selekcję E.Deptno = D.Deptno. v M =#stron w E, p E =#wierszy na stronie dla E, N =#stron w D, p D =#wierszy na stronie dla D. – w przykładzie: E – Emp, D – Dept. SELECT E.Ename, D.Loc FROM Emp E INNER JOIN Dept D ON E.Deptno = D.Deptno; Og ó lnie kolumny złączenia: E i w E i D j w D

12 Algorytm Nested Loops Join v Dla każdego wiersza zewnętrznej tabeli E, przeglądamy wszystkie wiersze wewnętrznej tabeli D. –Koszt (liczba sprowadzanych stron): M + M*N – Koszt mniejszy gdy M<N. v Metoda stosowana: –gdy M jest niewielkie (np. 2, 3). –do obliczania iloczynu kartezjańskiego (CROSS JOIN). foreach row e in E do foreach row d in D do if e i = d j then add to result

13 Algorytm Index Nested Loops Join foreach row e in E do {weź wartość e i kolumny złączenia E i i poprzez indeks na D j wyznacz wszystkie wiersze d w D mające tę samą wartość w kolumnie złączenia D j (d j = e i ): połącz oba takie wiersze i dodaj do obliczanego wyniku}

14 14 PJWSTK, SZB, Lech Banachowski Algorytm Index Nested Loops Join E EiEi DjDj Indeks D – Koszt: M + ( M*p E ) * (średni koszt wyznaczenia pasujących wierszy w D dla jednego wiersza w E )

15 15 PJWSTK, SZB, Lech Banachowski Algorytm Index Nested Loops Join v Dla każdego wiersza w E: średni koszt wyszukania pozycji danych w indeksie dla D jest: v ok. 1.2 dla indeksu haszowanego; v ok. 3 dla B+ drzewa. v Mając znalezioną pozycję danych, średni koszt wyznaczenia pasujących wierszy w D zależy od rodzaju indeksu: - indeks główny lub jednoznaczny: +1 – indeks pogrupowany: +1 We/Wy (zwykle) – indeks niepogrupowany: +1 We/Wy dla każdego pasującego wiersza w D – może być więcej niż liczba stron w D!

16 16 PJWSTK, SZB, Lech Banachowski Klaster tabel Można się lepiej przygotować do często występujących złączeń tabel przez umieszczenie ich w jednym klastrze z kluczem będącym kolumną złączenia obu tabel. Wiersze, które są ze sobą złączane, znajdują się wtedy (zazwyczaj) na tej samej stronie dyskowej. Połączenie tabel w klaster powoduje, że złączenie odbywa się tak jakby to była pojedyncza operacja przejścia jednej tabeli. Realizacja naszego przykładowego zapytania zostanie przyśpieszona jeśli obie tabele Emp i Dept umieścimy w jednym klastrze. Koszt metody jest taki jak koszt przejścia pliku rekordów rozmiaru N+M.

17 Algorytm Sort-Merge Join v Posortuj D i E na kolumnach złączenia, następnie scal odpowiadające sobie wiersze w D i E. Przy scalaniu na ogół każda z posortowanych tabeli D i E jest przeglądana raz (liniowo). v Koszt algorytmu Sort Merge Join mierzony liczbą operacji We/Wy jest liniowy = N+M operacji We-Wy – ze współczynnikiem ok. 5-7.

18 Algorytm Hash-Join Partycje E & D Bufor wej. dla partycji i rel. D Tablica haszowana dla partycji i relacji E B – buforów w RAM Dysk Bufor wyjściowy Dysk Wynik f. h. h2 B - buforów w RAM Dysk Oryginalne tabele 2 1 funkcja haszująca h1 B-1 Partycje 1 2 B-1... Podziel obie tabele E i D na partycje względem wartości funkcji haszujacej h1 na kolumnach złączenia: wiersze E w partycji i wystarczy złączyć z wierszami D w partycji i. Wczytaj partycję i tablicy E dokonując haszowania przy pomocy f.h. h2 (<> h1!). Wczytując elementy partycji i w D, stosuj h2 i uzgadniaj z E.

19 – Obie metody mają porównywalny liniowy koszt. – Hash Join lepszy przy większej różnicy rozmiarów; łatwy do zrównoleglenia; zły w pesymistycznym przypadku – nie losowym. – Sort-Merge mniej wrażliwy na losowość danych; wynik posortowany. Porównanie Sort-Merge Join i Hash Join

20 20 PJWSTK, SZB, Lech Banachowski Złączanie tabel obiektowo-relacyjnych Przy złączaniu tabel obiektowo-relacyjnych możemy skorzystać z referencji i kolekcji referencji. Obie operacje zarówno przejście przez referencję jak i przejście przez kolekcję referencji są szybsze niż odpowiednie operacje przejścia przez indeksy rozłączne dla tabel relacyjnych. Wady referencji i kolekcji referencji: 1.dodatkowy narzut czasowy i miejsca na dysku związany z reprezentacją i przetwarzaniem referencji i kolekcji, 2.są wolniejsze niż tabele relacyjne z użyciem klastrów i indeksów połączonych z tabelą.

21 Podsumowanie - realizacja operatorów v Zaleta relacyjnych SZBD – zapytania z łożone z kilku bazowych operatorów ; implementacje tych operatorów można dokładnie dostroić. v Wiele alternatywnych metod implementacyjnych. v Dla konkretnego zapytania dla każdego występującego w nim operatora trzeba rozważyć dostępne opcje i wybrać najlepszą korzystając z dostępnych statystyk. Jest to zadanie optymalizacji zapytania.

22 22 PJWSTK, SZB, Lech Banachowski Wykonywanie zapytań przez SZBD

23 23 PJWSTK, SZB, Lech Banachowski Optymalizacja zapytań v Budowa drzewa zapytania odpowiadającego wyrażeniu algebry relacji danego zapytania. v Plan : Algorytm wykonania zapytania – w postaci drzewa. – Dla danego zapytania: jakie plany są rozpatrywane? – Jak oszacować koszt planu? v Idealnie: Chcemy znaleźć najlepszy plan. Praktycznie: Staramy się unikać złych planów!

24 24 PJWSTK, SZB, Lech Banachowski Działanie w miejscu v Nie korzystanie z tymczasowych tabel. P rzy określonym sposobie dostępu do rekordów każdej tabeli utrzymuje się tylko kursory przebiegające rekordy w plikach (ewentualnie pozycje danych w pliku indeksowym) bez zapisywania pomocniczych tabel. v Metody złączenia Simple Nested Loops Join i Index Nested Loops Join umożliwiają działanie w miejscu. v Natomiast metody Sort-Merge Join i Hash Join wymagają użycia pomocniczych plików na dysku, więc nie działają w miejscu. v Zastosowanie klastra lub kolekcji referencji zamiast operatora złączenia też umożliwia działanie w miejscu.

25 25 PJWSTK, SZB, Lech Banachowski Przetwarzanie potokowe v Wynik jednego operatora relacyjnego jest przekazywany na wejście drugiego operatora. Oznacza to, że nie jest potrzebna tymczasowa tabela, więc metoda ta umożliwia działanie w miejscu.

26 26 PJWSTK, SZB, Lech Banachowski Przykład v Dostęp do tabel: Scan. v Działa w miejscu, przetwarza potokowo. v Cel optymalizacji: Wyznaczyć inne bardziej efektywne plany obliczenia tego samego wyniku. SELECT E.Ename FROM Emp E INNER JOIN Dept D ON E.Deptno=D.Deptno WHERE E.Mgr=100 AND D.Loc='Oz'; Drzewo instrukcji: Plan 1: Scan

27 27 PJWSTK, SZB, Lech Banachowski Plan 2 (bez użycia indeksu do złączania) v Główna różnica: selekcje wcześniej. v Zamiast SORT-MERGE JOIN mogłoby być HASH JOIN. v Dwie alternatywne metody dostępu do rekordów: –przez scan całej tabeli; –przez wyszukiwanie przez indeks odpowiednio na Emp.Mgr i Dept.Loc. v Nie działa w miejscu.

28 28 PJWSTK, SZB, Lech Banachowski Plan 3 (z metodą dostępu do tabel przez indeksy) v Najlepszy byłby indeks pogrupowany lub selektywny na Emp( Mgr ), ewentualnie indeks haszowany. Dostęp do rekordów w Emp przez ten indeks. v INL bez zapisywania wyniku selekcji jako tymczasowej relacji - działa w miejscu. v Kolumna złączenia Deptno jest kluczem głównym dla tabeli Dept. Wystarczy indeks niepogrupowany. Emp Dept Deptno=Deptno Mgr=100 Ename Loc=Oz (Hash index; bez temp) (Index Nested Loops)

29 29 PJWSTK, SZB, Lech Banachowski Generowanie przez optymalizator planów wykonania zapytania v Generowanie równoważnych drzew wykonania zapytania. Analiza złączeń i ograniczenie do: drzew skierowanych w lewo. – Drzewa skierowane w lewo dają plany umożliwiające wykonanie zapytania w miejscu tj. bez tymczasowych plików. – Podstawa: przemienność i łączność operatora złączenia. B A C D B A C D C D B A Analiza dostępu do poszczególnych tabel z możliwością zastowania indeksów.

30 30 PJWSTK, SZB, Lech Banachowski v Faza 1: Generowanie równoważnych drzew wykonania zapytania. v Faza 2: Analiza metod dostępu do tabel Emp i Dept : Emp: Indeks haszowany na Emp.Mgr Indeks główny B+drzewo na Emp.Empno Scan Dept: Indeks B+ drzewo na Dept.Loc Scan Indeks główny haszowany na Dept.Deptno Faza 3: Rozpatrujemy każde drzewo z Fazy 1 i każdą metodę dostępu z Fazy 2. Idąc od najniższych poziomów drzewa zapytania wybieramy metodę realizacji każdego operatora relacyjnego np. dla złączenia: NLJ, INLJ, SMJ, HJ, liczymy orientacyjny koszt korzystając ze statystyk zebranych przez system jak liczba wierszy, liczba stron dla plików z danymi i plików indeksów, selektywność wyszukiwania przez indeks. Powstaje możliwy plan wykonania zapytania razem z oszacowanym kosztem. v Faza 4: Spośród wszystkich wygenerowanych planów wykonania zapytania system wybiera plan o najmniejszym koszcie.

31 31 PJWSTK, SZB, Lech Banachowski Podzapytania (w tym perspektywy lokalne inline) Podzapytania są optymalizowane niezależnie. Główne zapytanie jest optymalizowane z branym pod uwagę kosztem wywoływanych podzapytań. Alternatywnie, sprowadzane do złączeń i optymalizowane łącznie.

32 32 PJWSTK, SZB, Lech Banachowski Ogólne strategie optymalizacyjne Wybierz plan wykonania działający w miejscu bez pomocniczych relacji (drzewa skierowane w lewo). Wykonuj jednocześnie ciągi operacji jednoargumentowych takich jak selekcje i rzuty (realizacja potokowa). Sprowadzaj przetwarzanie do operacji w pamięci RAM np. przez dokonanie jak najwcześniej selekcji, istotnie ograniczającej liczbę wierszy. Gdy złączenia bez operatorów JOIN, s taraj się związać selekcje z iloczynem kartezjańskim, w celu zidentyfikowania rodzaju złączenia relacji. Wyszukuj wspólne podwyrażenia i wykonuj je tylko raz. P rzetwórz wstępnie plik (posortuj, wykonaj haszowanie). Cały czas gromadź statystyki ilościowe dotyczące tabel, kolumn i indeksów, jak liczba stron, liczba różnych wartości w kolumnie. D okonaj analizy możliwych opcji z oszacowaniem ich kosztu. v Rozważ możliwość użycia indeksów w tym bitmapowych. Stosuj: Klaster. Strategię tylko indeks. Perspektywę zmaterializowaną.


Pobierz ppt "WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka."

Podobne prezentacje


Reklamy Google