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

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Optymalizacja zapytań
Podział i zastosowanie
INDEKSY I SORTOWANIE ZEWNĘTRZNE
Bazy danych i inżynieria oprogramowania
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Relacyjny model danych
Język SQL ma ciekawe możliwości tworzenia zapytań
WPROWADZENIE DO BAZ DANYCH
MS Access 2003 Kwerendy Paweł Górczyński.
Domknięcie przechodnie (również) w bazach danych
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 8: Perspektywy i sekwencery.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 3: Język bazy danych - SQL Funkcje grupowe.
Co to jest studium przypadku?
SQL-owskie szlaki górskie
Zapytania SQL: wydajność i optymalizacja
BD-LAB6 Wojciech Pieprzyca
Wprowadzenie do systemów baz danych
Rozproszone bazy danych
Fizyczna organizacja danych w bazie danych Wykład 7
SQL - język relacyjnych i obiektowo-relacyjnych baz danych
Projektowanie fizycznej bazy danych
Modele baz danych - spojrzenie na poziom fizyczny
Hurtownie danych a bazy danych
„Relacyjne Bazy Danych (Oracle)”
Język SQL – podstawy zapytań
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Język SQL (Structured Query Language) DDL (Data Definition Language)
Structured Query Language
Teoria relacyjnych baz danych
OPERACJA DZIELENIA W SQL
PROJEKTOWANIE TABEL W PROGRAMIE: ACCESS
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
Przetwarzanie w oknie - nowa siła zapytań
MySQL – ODBC - ACCESS.
Temat 19: Organizacja informacji w bazie danych – część 2.
SQL - Structured Query Language
Wyprowadzanie informacji z bazy danych - kwerendy wybierające Marzena Nowakowska Katedra Informatyki Stosowanej, WZiMK, PŚk.
Komendy SQL do pracy z tabelami i bazami
Bazy danych Microsoft access 2007.
Łódź 2008 Banki danych WYKŁAD 2 dr Łukasz Murowaniecki T-109.
Temat 1: Strukturalny język zapytań SQL
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Wykład II Język SQL – polecenia DQL Powtórzenie wiadomości – cz. 1
Systemy Baz Danych Wykład III
Definiowanie kluczy w tabelach RBD
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Powtórzenie wyk ł adu 10 Fizyczna organizacja danych w bazie danych. Indeksy.
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Komendy SQL do pracy z danymi
Język SQL – polecenie Select
Relacja (ang.relation) Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do systemu bazy danych informacje na temat.
BAZY DANYCH MS Access.
Bazy Danych Wprowadzenie
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Oracle Data Modeler (4.1). Aplikacja Wymagania biznesowe Tworzenie systemu informacyjnego Procesy Informacje Analiza Projektowanie Browser: Hollywood.
Bazy danych. Baza danych (database) – magazyn danych – informacji powiązanych tematycznie, umożliwiający ich wyszukiwanie według zadanych kryteriów Baza.
Temat: Tworzenie bazy danych
1 Instrukcja SELECT : SELECT[DISTINCT  ALL] {*  [wyrażenie_kolumnowe [AS nowa_nazwa]],[…]} FROMNazwaTabeli [alias],[...] [WHEREwarunek_selekcji_wierszy]
Wybieranie wierszy: 1 Warunek WHERE Rodzaje warunków: - liczbowe - liczbowe z zakresu - znakowe.
Optymalizacja zapytań w SQL Server
Indeksy.
Fizyczna organizacja danych w bazie danych Wykład 7
Strukturalny język zapytań SQL - historia
Technologie Informacyjne Bazy danych
Rozproszone bazy danych
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

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.

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

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

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 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.

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

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.

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 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 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)

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

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

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 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 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 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.

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.

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.

– 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 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ą.

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 PJWSTK, SZB, Lech Banachowski Wykonywanie zapytań przez SZBD

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 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 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 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 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 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 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 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 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 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ą.