Optymalizacja zapytań

Podobne dokumenty
Optymalizacja poleceń SQL Metody dostępu do danych

Optymalizacja zapytań. Proces przetwarzania i obliczania wyniku zapytania (wyrażenia algebry relacji) w SZBD

Optymalizacja poleceń SQL Wprowadzenie

Optymalizacja poleceń SQL

Bazy danych wykład dwunasty. dwunasty Wykonywanie i optymalizacja zapytań SQL 1 / 36

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

Cwiczenie 4. Połączenia, struktury dodatkowe

Bazy danych. Plan wykładu. Przetwarzanie zapytań. Etapy przetwarzania zapytania. Translacja zapytań języka SQL do postaci wyrażeń algebry relacji

Przykładowe B+ drzewo

Kosztowy optymalizator zapytań

Definicja pliku kratowego

1 Wstęp do modelu relacyjnego

Optymalizacja zapytań część II

Teoretyczne podstawy informatyki

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego.

Fazy przetwarzania polecenia SQL. Faza parsingu (2) Faza parsingu (1) Optymalizacja poleceń SQL Część 1.

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Statystyki (1) Optymalizacja poleceń SQL Część 2. Statystyki (2) Statystyki (3) Informacje, opisujące dane i struktury obiektów bazy danych.

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Optymalizacja. Plan wykonania polecenia SQL (1) Plan wykonania polecenia SQL (2) Rozdział 19 Wprowadzenie do optymalizacji poleceń SQL

Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.

Język SQL. Rozdział 2. Proste zapytania

Relacyjny model danych

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Autor: Joanna Karwowska

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Optymalizacja poleceń SQL

Podstawy Informatyki. Metody dostępu do danych

Przestrzenne bazy danych Podstawy języka SQL

Fazy przetwarzania zapytania zapytanie SQL. Optymalizacja zapytań. Klasyfikacja technik optymalizacji zapytań. Proces optymalizacji zapytań.

Tadeusz Pankowski

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

Wykład XII. optymalizacja w relacyjnych bazach danych

Model relacyjny. Wykład II

PLAN WYKŁADU BAZY DANYCH ETAPY PRZETWARZANIA ZAPYTANIA OPTYMALIZACJA ZAPYTAŃ

sprowadza się od razu kilka stron!

Wprowadzenie do języka SQL

Model relacyjny. Wykład II

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

SQL SERVER 2012 i nie tylko:

Zad. 1. Systemy Baz Danych przykładowe zadania egzaminacyjne

Laboratorium Bazy danych SQL 2

Indeksy w bazach danych. Motywacje. Techniki indeksowania w eksploracji danych. Plan prezentacji. Dotychczasowe prace badawcze skupiały się na

Bazy danych - BD. Indeksy. Wykład przygotował: Robert Wrembel. BD wykład 7 (1)

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie. Krzysztof Jankiewicz

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Optymalizacja poleceń SQL Statystyki

Indeksowanie w bazach danych

Bazy danych. Plan wykładu. Model logiczny i fizyczny. Operacje na pliku. Dyski. Mechanizmy składowania

Bazy danych. Andrzej Łachwa, UJ, /15

INDEKSY I SORTOWANIE ZEWNĘTRZNE

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Optymalizacja zapytań część I

PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych

Optymalizacja wydajności SZBD

INDEKSY. Biologiczne Aplikacje Baz Danych. dr inż. Anna Leśniewska

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Algebra relacji. nazywamy każdy podzbiór iloczynu karteziańskiego D 1 D 2 D n.

PODSTAWY BAZ DANYCH. 15. Optymalizacja zapytań. 2009/ Notatki do wykładu "Podstawy baz danych"

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Administracja i programowanie pod Microsoft SQL Server 2000

Zapytania, złączenia, optymalizacja zapytań, planowanie zapytań, optymalizacja indeksów.

Systemy OLAP II. Krzysztof Dembczyński. Instytut Informatyki Zakład Inteligentnych Systemów Wspomagania Decyzji Politechnika Poznańska

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Rozproszone bazy danych 3

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Przygotowanie do egzaminu. część I

Ćwiczenie zapytań języka bazy danych PostgreSQL

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

SYSTEMY UCZĄCE SIĘ WYKŁAD 4. DRZEWA REGRESYJNE, INDUKCJA REGUŁ. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska

Haszowanie (adresowanie rozpraszające, mieszające)

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski

Optymalizacja poleceń SQL Indeksy

Sortowanie bąbelkowe

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

Systemy GIS Tworzenie zapytań w bazach danych

Podstawy języka SQL cz. 2

WPROWADZENIE DO BAZ DANYCH

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

Systemy plików i zarządzanie pamięcią pomocniczą. Struktura pliku. Koncepcja pliku. Atrybuty pliku

Teoretyczne podstawy informatyki

Cwiczenie 2. Metody dostępu do danych

Teoretyczne podstawy informatyki

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

RBD Relacyjne Bazy Danych

Indeksy. Wprowadzenie. Indeksy jednopoziomowe indeks podstawowy indeks zgrupowany indeks wtórny. Indeksy wielopoziomowe

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Operacja Teta-złączenia. v1 v1 Θ v2

Bazy danych 2013/14. Egzamin. (5 pkt). Baza danych przechowuje w relacji binarnej G graf skierowany.

Transkrypt:

Optymalizacja zapytań Charakterystyka środowiska relacyjnej bazy danych 1. Złożone zapytania zawierające wiele elementarnych operacji relacyjnych: selekcji, projekcji, połączenia, porządkowania, itd. select p.nazwisko from pracownicy p, zespoły z where p.id_zesp = z.id_zesp and p.płaca = 7500 and z.budżet > 5 000 000 Przemienność operacji relacyjnych (a) π nazwisko (σ płaca=7500 Pracownicy) (σ budżet>5000000 Zespoły) (b) π nazwisko (σ płaca=7500 and budżet>5000000 (Pracownicy Zespoły)) (c) σ budżet>5000000 ((σ płaca=7500 (π nazwisko Pracownicy)) Zespoły) 2. Istnienie wielu alternatywnych logicznie równoważnych metod dostępu (fizyczna niezależność danych) σ płaca=7500 Pracownicy - (k) iteracja po wszystkich danych - (l) indeks drugorzędny Przykład B = 2 kb R(Pracownicy) = 100 B bfr(pracownicy) = 20 R(Zespoły) = 50 B bfr(zespoły) = 40 r(pracownicy) = 10 000 b(pracownicy) = 500 r(zespoły) = 100 b(zespoły) = 3 (a) σ płaca=7500 Pracownicy = P : iteracja 500 operacji I/O σ budżet>5000000 Zespoły = Z : iteracja 3 operacje I/O b(p ) = 2; b(z ) = 1 (P ) (Z ) = PZ: nested loop 3 operacje, b(pz) = 2 π nazwisko (PZ) = wynik: 2 operacje Razem: 508 operacji (b) (Pracownicy) (Zespoły) = PZ: nested loop (Pracownicy = outer, n=10) 650 operacji b(pz) = 770 σ płaca=7500 and budżet>5000000 (PZ) = PZ : iteracja 770 operacji I/O, b(pz ) = 2 π nazwisko (PZ) = wynik: 2 operacje Razem: 1422 operacje Kolejność wykonywania elementarnych operacji relacyjnych oraz wybór jednej z alternatywnych metod dostępu ma istotny wpływ na czasy wykonywania zapytań

Metody dostępu do danych Operacja selekcji S1. Iteracja: Odczytuj kolejno wszystkie rekordy pliku i sprawdzaj czy wartości ich atrybutów spełniają warunek selekcji. S2. Połowienie binarne: Jeżeli warunek logiczny operacji selekcji odwołuje się do atrybutu porządkującego plik można zastosować bardziej efektywną metodę wyszukiwania. Za pomocą algorytmu połowienia binarnego znajdź pierwszy rekord, który spełnia warunek zapytania. Następnie odczytaj kolejne rekordy spełniające warunek zapytania. S3. Zastosowanie indeksu: Jeżeli na atrybucie występującym w warunku logicznym selekcji jest założony indeks, to korzystając z tego indeksu znajdź wskaźnik na pierwszy rekord spełniający warunek zapytania. Następnie trawersując po liściach indeksu pobieraj kolejne wskaźniki rekordów spełniających warunek zapytania. S4. Zastosowanie funkcji mieszającej: Jeżeli zapytanie zawiera warunek logiczny zawierający atrybut, który jest argumentem funkcji mieszającej i operatorem relacyjnym jest operator "=" zastosuj funkcję mieszającą i wyznacz wskaźnik na szukany rekord. S5. Zastosowanie identyfikatora rekordu: Odczytaj rekord o danym identyfikatorze. Problem: Selektywność zapytania Czy zawsze należy korzystać z dostępnych indeksów lub plików haszowych? Selektywność = card(relacji wynikowej) card(relacji źródłowej) Przykład Relacja Pracownicy liczba rekordów = 2000, atrybut id_prac jest kluczem podstawowym relacji (q1) σ id_prac=120 (PRACOWNICY) selektywność(q1) = 1/2000 = 0,0005 (q2) σ etat=120 (PRACOWNICY) selektywność(q2) = 1/count(distinct etat) (q3) σ płeć='k' OR płaca>50000 (PRACOWNICY) selektywność(q2) = 1001/2000 0,5 (q4)σ płaca IS NOT NULL (PRACOWNICY) selektywność(q3) = 1998/2000 1

Estymacja kosztu metod dostępu dla operacji selekcji Koszty będą określane liczbą operacji I/O Liczba rekordów relacji r, liczba bloków zajmowanych przez relację b, selektywność zapytania s, wysokość indeksu h, rząd indeksu q. S1 S2 S3 b/2 (średnio) pomyślne odnalezienie rekordu spełniającego warunek atr = x, gdzie atr jest kluczem relacji b wszystkie pozostałe przypadki, niezależnie od selektywności zapytania log 2 b + s*b h + s q h-1 + s r lub h + s r/q + s r dla indeksu drugorzędnego h + s b dla indeksu podstawowego lub zgrupowanego S4 1 S5 1 Złożone warunki zapytania Koniunkcja warunków prostych S6. Zagnieżdżanie selekcji: Jeżeli w warunku zapytania występują atrybuty, dla których jest dostępna jedna z metod dostępu: S2 do S5, to zastosuj najbardziej selektywną metodę. Następnie odczytując rekordy wyznaczone przez tę metodę sprawdź, które z nich spełniają pozostałe warunki zapytania. S7. Metoda dostępu zdefiniowana na zbiorze atrybutów: Jeżeli dla kilku atrybutów występujących w warunku zapytania w porównaniach równościowych, jest dostępny indeks lub funkcja mieszająca zdefiniowane na konkatenacji tych atrybutów, zastosuj je. S8. Iloczyn logiczny zbiorów identyfikatorów: Jeżeli dla kilku atrybutów występujących w warunku zapytania, są dostępne metody dostępu: S2 do S5, to wyznacz za ich pomocą zbiory identyfikatorów rekordów spełniających poszczególne warunki zapytania. Następnie wyznacz iloczyn logiczny tych zbiorów. Suma warunków prostych S9. Suma logiczna zbiorów identyfikatorów: Jeżeli dla wszystkich atrybutów występujących w prostych warunkach zapytania połączonych operatorem OR, są dostępne metody dostępu: S2 do S5, to wyznacz za ich pomocą zbiory identyfikatorów rekordów spełniających te warunki. Następnie wyznacz sumę logiczną tych zbiorów.

Metody łączenia rekordów plików J1. Algorytm Nested loop: Wybierz jeden z plików jako zewnętrzny (outer), a drugi jako wewnętrzny (inner). Dla bufora pamięci o wielkości n bloków wczytuj kolejno do tego bufora po n-1 bloków pliku zewnętrznego. Po każdej operacji odczytu pliku zewnętrznego wczytuj pojedynczo do ostatniego bloku bufora wszystkie bloki pliku wewnętrznego. Spróbuj połączyć znajdujące się w buforze rekordy pliku zewnętrznego z rekordami pliku wewnętrznego. Połączone rekordy umieszczaj w pliku wynikowym. plik zewnętrzny n-1 plik wewnętrzny J2. Bezpośrednie ścieżki dostępu dla dopasowania rekordów: Jeżeli dla atrybutu połączeniowego jednego z plików jest dostępna jedna z metod dostępu: S2 do S5, to odczytuj kolejno wszystkie rekordy drugiego z nich. Dla każdego odczytanego rekordu, korzystając z bezpośredniej ścieżki dostępu znajdź wszystkie rekordy pierwszego pliku o danej wartości atrybutu połączeniowego. J3. Algorytm Sort-merge: Jeżeli łączone pliki są uporządkowane według wartości atrybutu połączeniowego (lub na atrybutach połączeniowych jest założony indeks), przeglądając liniowo obydwa pliki dopasowuj rekordy na podstawie wartości atrybutu połączeniowego. J4. Algorytm Hash-join: Zastosuj funkcję mieszającą na atrybucie połączeniowym dla utworzenia jednego pliku haszowego dla rekordów obydwu łączonych plików. J5. Plik zgrupowany: Korzystając z jednej z metod dostępu odczytaj połączone fizycznie rekordy. n

Koszty metod połączenia Selektywność połączenia - JS JS = R c S / R S JS określa rozmiar pliku wynikowego Szczególne przypadki: Dla operacji iloczynu kartezjańskiego JS = 1 Jeżeli warunek połączeniowy relacji R i S jest A = B, gdzie A jest kluczem w relacji R, wtedy R c S S, a więc JS 1/ R Współczynnik selektywności połączenia - JSF JSF jest równy procentowi rekordów danego pliku, dla których warunek połączeniowy jest spełniony Przykłady Plik A: r A = 50 rekordów, b A =10 bloków Plik B: r B = 5000 rekordów, b B = 2000 bloków Bufor pamięci: n = 6 bloków, js = 1/5000, bfr AB = 2 Wysokość indeksu na atrybucie połącz. pliku A: x A =2 Wysokość indeksu na atrybucie połącz. pliku B: x B =4 Rząd drzewa p = 100, q = 75 J1. Liczba odczytanych bloków pliku zewnętrznego = b o Liczba transferów bloków pliku zewnętrznego = b o /(n - 1) Liczba odczytanych bloków pliku wewnętrznego = b i b o /(n - 1) a) Plik B - zewnętrzny, plik A - wewnętrzny b B + (b A b B /(n - 1) ) + (js A B )/bfr AB = 2000 + ( 10 * 2000/5 ) + 50/2 = 6025 b) Plik A - zewnętrzny, plik B - wewnętrzny b A + (b B b A /(n - 1) ) + (js A B )/bfr AB = 10 + ( 2000 * 10/5 ) + 50/2 = 4035 J3. b A + b B + (js A B )/bfr AB = 2035 J2. JSF = 0,0002; a) b B + (r B (x A + JSF (r A /q+r A ))) + (js A B )/bfr AB = 2000 + (5000 2,01) + 50/2 10075 b) b A + (r A (x B + JSF (r B /q+r B ))) + (js A B )/bfr AB = 10 + (50 5,01) + 50/2 285

Drzewo zapytania Realizacja zapytań Struktura hierarchiczna odpowiadająca wyrażeniu algebry relacji: relacje są reprezentowane przez liście hierarchii, a operacje algebry przez węzły wewnętrzne Wykonanie drzewa zapytania Krokowe wykonanie operacji reprezentowanych przez wewnętrzne węzły drzewa zapytania w momencie gdy dostępne są wszystkie argumenty danej operacji. Węzły reprezentujące wykonane operacje są zastępowane relacjami, które powstały jako wynik tych operacji. Wykonanie drzewa zapytania kończy się kiedy wykonana zostanie operacja znajdująca się w korzeniu drzewa i zostanie ona zastąpiona ostatecznym wynikiem zapytania. Realizacja zapytań Kanoniczne drzewo zapytania Analizator składniowy zapytania transluje zapytania zapisane w języku zapytań (np. SQL) na kanoniczne drzewo zapytania. Przykład: SELECT nazwisko FROM pracownicy p, projekty k, udział u WHERE p.id_prac = k.prac AND u.proj = k.id_proj AND u.zatrudniony < '1-03-1998' AND k.budżet > 500000 π nazwisko σ id_prac=prac AND proj=id_proj AND zatrudniony < '1-03-1998' AND budżet > 500000 r π nazwisko, nazwa >< id_zesp = id r Udział Pracownicy Zespoły Pracownicy Projekty W ogólności dla danego zapytania istnieje wiele równoważnych drzew zapytania.

Optymalizacja zapytań Kolejność wykonywania operacji relacyjnych drzewo zapytania ma wpływ na czas wykonywania zapytania.? Pracownicy π nazwisko, nazwa σ staż_pracy > 10 >< id_zesp = id Zespoły Celem działania optymalizatora zapytań jest transformacja nieefektywnego kanonicznego drzewa zapytania w równoważne logicznie drzewo, którego wykonanie będzie efektywne. Reguły transformacji drzewa zapytania (1) Rozbicie operacji selekcji: zamiana operacji selekcji z warunkiem, który jest iloczynem logicznym warunków składowych, na sekwencję operacji selekcji ze składowymi warunkami zapytania: σ C1 AND C 2 (R) σ C1 (σ C2 (R)), (2) Rozbicie operacji selekcji: zamiana operacji selekcji z warunkiem, który jest sumą logiczną warunków składowych, na sumę operacji selekcji ze składowymi warunkami zapytania: σ C1 OR C 2 (R) σ C1 (R) σ C2 (R). (3) Przemienność operacji selekcji: σ C1 (σ C2 (R)) σ C2 (σ C1 (R)). (4) Sekwencja operacji projekcji: w sekwencji operacji projekcji wszystkie operacje za wyjątkiem pierwszej mogą zostać usunięte: π L1 (π L2 (π L3 (R))) π L 1 (R), gdzie: L 1 L 2 L 3.

(5) Przemienność operacji projekcji i selekcji: π A1, A2,..., An (σ C (R)) σ C (π A1, A2,..., An (R)), gdzie: warunek C odwołuje się jedynie do atrybutów A 1, A 2,..., A n. (6) Przemienność operacji połączenia (lub iloczynu kartezjańskiego): R >< C S S >< C R (Rr S Sr R). (7) Przemienność operacji selekcji i połączenia (lub iloczynu kartezjańskiego): σ C (R >< S) (σ C1 (R)) >< (σ C2 (S)) gdzie: C 1 AND C 2 = C. (8) Przemienność operacji projekcji i połączenia (lub iloczynu kartezjańskiego): π L (R >< C S) (π L 1 (R) >< C (π L2 (S)), (10) Łączność operacji połączenia, iloczynu kartezjańskiego, sumy i iloczynu relacji: (R Θ S) Θ T R Θ (S Θ T), gdzie: Θ reprezentuje jedną z wymienionych operacji binarnych. (11) Przemienność operacji selekcji z operacjami sumy, iloczynu i różnicy relacji: σ C (R Θ S) (σ C (R)) Θ (σ C (T)), gdzie: Θ reprezentuje jedną z wymienionych operacji. (12) Przemienność operacji projekcji z operacją sumy relacji: π L (R S) π L (R) π L (T). gdzie: L = A 1, A 2,..., A n, B 1, B 2,..., B m, L 1 = A 1, A 2,..., A n, A n+1,..., A n+k, L 2 = B 1, B 2,..., B m, B m+1,..., B m+p. Atrybuty o indeksach n+1 do n+k i m+1 do m+p, są to atrybuty z poza listy L, do których odwołuje się warunek C. (9) Przemienność operacji sumy i iloczynu relacji: R Θ S S Θ R, gdzie: Θ reprezentuje jeden z operatorów lub.

Zasady działania algorytmu optymalizacji zapytań Ogólną zasadą działania algorytmy jest takie przesuwanie węzłów wewnętrznych w drzewie zapytania, aby operacje bardziej restrykcyjne (tzn. takie, których wynikiem są relacje przejściowe o najmniejszym rozmiarze) były wykonywane w pierwszej kolejności. 1. Korzystając z reguły transformacji (1) dziel operacje selekcji na selekcje z warunkami elementarnymi. Ułatwi to przesuwanie wybranych selekcji w dół drzewa zapytania. 2. Korzystając z reguł (3), (5), (7) i (11) opisujących własność przemienności operacji selekcji z innymi operacjami relacyjnymi, przesuń każdą z powstałych operacji selekcji jak najniżej w dół drzewa. π nazwisko σ proj=id_proj r 3. Korzystając z reguły transformacji (10) dotyczącej łączności operacji binarnych zmień kolejność łączenia relacji tak, żeby jako pierwsze były wykonywane operacje na relacjach o najbardziej restryktywnym warunku selekcji. σ budżet > 500000 Projekty σ proj=id_proj r π nazwisko σ id_prac=prac r Pracownicy σ zatrudniony < '1-03-1998' Udział 4. Połącz iloczyny kartezjańskie relacji z operacjami selekcji, które reprezentują warunki połączeniowe, w operacje połączenia relacji. π nazwisko σ id_prac=prac σ zatrudniony < '1-03-1998' >< id_prac=prac r Udział >< proj=id_proj Pracownicy Pracownicy σ budżet > 500000 Projekty σ budżet > 500000 Projekty σ zatrudniony < '1-03-1998' Udział

5. Korzystając z reguł (4), (5), (8) i (12) opisujących własności podziału i przemienności operacji projekcji podziel i przesuń operacje projekcji jak najniżej w dół drzewa zapytania. Jeżeli potrzeba twórz nowe operacje projekcji. π id_proj σ budżet > 500000 Projekty π prac >< proj=id_proj π nazwisko >< id_prac=prac π id_prac, nazwisko π proj, prac Udział Pracownicy σ zatrudniony < '1-03-1998' Kosztowa optymalizacja fizycznych planów zapytań Fizyczny plan zapytania obejmuje: Porządek i łączenie operacji komutatywnych i łącznych. Metodę dostępu dla każdego operatora w planie logicznym. Dodanie operacji nie występujących w planie logicznym, ale niezbędnych dla planu fizycznego (np. sortowania). Sposób przesyłania argumentów między operatorami: składowanie wyników przejściowych lub przesyłanie pojedynczych danych między buforami. σ płaca>5000 PRACOWNICY <IdZesp=IdZesp> ZESPOŁY Nested Loops Full Table Access (Zespoły) Table Access by ROWID (Pracownicy) Index Scan (Płaca)

Funkcja kosztu Składniki funkcji kosztu Operacje dyskowe (D): szukanie, czytanie i zapis bloków dyskowych (podstawowa część kosztów) [liczba operacji dyskowych] Zajętość pamięci dyskowej (S): składowanie wyników pośrednich [liczba bloków dyskowych] Czas przetwarzania (P): czas wykonywania algorytmów związanych z metodami dostępu [liczba kroków algorytmu] Zajętość pamięci operacyjnej (M): przydział pamięci na bufory dla operacji sortowania, usuwania duplikatów, nested-loop, itp. [rozmiar przydzielonej pamięci] Koszty komunikacyjne (K): w przypadku wykonywania zapytań w środowisku rozproszonym [liczba przesyłanych bloków danych] Funkcja kosztu: suma ważona składników kosztu Przykładowa funkcja kosztu: Koszt = 0,7*D + 0,05*S + 0,05*P + 0,15*M + 0,05*K Dane wejściowe dla wyznaczania składników funkcji kosztu liczba rekordów w pliku liczba bloków danych zajmowanych przez plik średnia zajętość bloku średnia długość rekordów liczba różnych wartości danego atrybutu wartość minimalna i maksymalna wartość każdego atrybutu rozkład wartości wysokość indeksu liczba liści w indeksie współczynnik uporządkowania indeksowanego atrybutu ANALYZE {TABLE tablica INDEX indeks CLUSTER grono} { COMPUTE STATISTICS ESTIMATE STATISTICS SAMPLE liczba {ROWS PERCENTS} DELETE STATISTICS }

Składowanie informacji o rozkładach danych Histogramy danych Podział dziedziny na przedziały o stałej długości: (v 0 v 0 +d) n 0, (v 0 +d v 0 +2d) n 1,... Najczęściej występujące wartości: 2500 123, 2800 87, 2100 45, inne 459 Podział zbioru wartości atrybutu na n podzbiorów o stałej wielkości: (580 1200) 1, (1201 1350) 2,..., (4510 128000) n Szacowanie rozmiarów pośrednich wyników zapytań Pośrednie wyniki zapytania są argumentami kolejnych operacji relacyjnych Szacowanie rozmiarów selekcji S relacja źródłowa O=σ(S) relacja wynikowa r(r) liczba rekordów relacji R V(R,A) liczba różnych wartości atrybutu A relacji R 1. O=σ A=c (S) r(o)=r(s)/v(s,a) 2. O=σ A<c (S) r(o)=r(s)/3 3. O=σ A c (S) r(o)= r(s) (V(S,A)-1)/V(S,A) 4. O=σ A=c1 and B=c2 (S) r(o)= r(s)/(v(s,a) V(S,B)) 5. O=σ A=c1 or B=c2 (S) r(o)=r(s) (1-(1-1/V(S,A)) (1-1/V(S,B)))

Szacowanie rozmiarów połączenia 1. O=R R.X=S.YS r(o)=r(r) r(s)/max(v(r,x),v(s,y)) 2. O=R R.X=S.Y and R.W=S.ZS r(r) r(s) r(o)= (max(v(r,x),v(s,y)) (max(v(r,x),v(s,y)) Urealnienie kosztu operacji dyskowych Na czas wykonywania operacji dyskowych składają się trzy podstawowe składniki: czas szukania ścieżki (s) (10-50 [ms]); czas opóźnienia obrotu (rd); dla prędkości obrotowej p wyrażonej w liczbie obrotów na minutę, czas ten wynosi: rd = (1/2)*(1/p) [min] = (60*1000)/(2*p) [ms]; dla: p = 5400 [rpm], rd = 5,56 [ms]. czas transferu bloku (btt); zależy od rozmiaru ścieżki, rozmiaru transferowanego bloku i prędkości obrotowej dysku. Dla danej prędkości transferu tr czas transferu sektora o rozmiarze B wynosi: btt = B/tr [ms]. Dla ścieżki o rozmiarze 50 kb, i dla prędkości obrotowej dysku 5400 rpm, prędkość transferu danych wynosi: tr = (50*1000)/(60*1000/5400) = 4500 [bajtów/ms]; i dalej dla bloku B=2kB: btt = 0,46 [ms].

Wpływ rozkładu danych na czasy wykonywania operacji dyskowych Czas odczytu k bloków rozmieszczonych sekwencyjnie na jednej ścieżce będzie wynosił w tym wypadku: czas sekwencyjnie = s + rd + k * btt [ms]. Czas odczytu k bloków losowo rozrzuconych po dysku będzie wynosił: czas losowo = k * (s + rd + btt) [ms]. Dla k = 25, B = 2 [kb], s =10 [ms], rd = 5,56 [ms], btt = 0,46 [ms]: czas sekwencyjnie = 27,06 [ms], czas losowo = 400 [ms]. Optymalizacja zapytań w oparciu o funkcję kosztów Optymalizacja zapytań polega na znalezieniu optymalnego stanu w przestrzeni stanów zawierającej wszystkie możliwe plany wykonania danego zapytania. Stan optymalny jest to stan o najmniejszej wartości funkcji kosztu. Optymalizator zapytań jest charakteryzowany przez: Reguły transformacji służące do generowania przestrzeni stanów dla danego zapytania. Algorytm przeszukiwania przestrzeni stanów pozwalający na przechodzenie między poszczególnymi stanami. Funkcja kosztu, która jest stosowana do każdego ze stanów.

Algorytmy przeszukiwania 1. Algorytmy dokładne pełne przeszukiwanie (exhaustive search) programowanie dynamiczne 2. Algorytmy przybliżone heurystyki optymalizacja składniowa 3. Metaheurystyki - algorytmy kombinatoryczne Iterative Improvement Simulated Annealing Tabu Search Podstawowe pojęcia optymalizacji kombinatorycznej Stan akceptowalny plan wykonania zapytania Przestrzeń stanów zbiór wszystkich możliwych stanów Ruch wygenerowanie i przejście do nowego stanu Sąsiad stan osiągany ze stanu bieżącego za pomocą jednego ruchu Koszt stanu wartość funkcji kosztu dla danego planu zapytania Minimum lokalne stan, dla którego żaden z sąsiadów nie posiada niższego kosztu Minimum globalne stan o najniższym koszcie w przestrzeni stanów - rozwiązanie optymalne

Algorytmy kombinatoryczne Iterative Improvement 1. wybierz losowo stan początkowy; 2. przeszukuj przestrzeń stanów przez wykonywanie ruchów, akceptując tylko sąsiadów z niższym kosztem, aż do osiągnięcia minimum lokalnego; 3. powtarzaj kroki 1) i 2) do momentu spełnienia warunku kończącego optymalizację; 4. zwróć najlepsze znalezione minimum lokalne Simulated Annealing 1. wybierz losowo stan początkowy; 2. dobierz początkową temperaturę; 3. redukując stopniowo T przeszukuj przestrzeń stanów, akceptując zawsze sąsiadów z niższym kosztem i akceptując sąsiadów o wyższym koszcie z prawdopodobieństwem równym e- C/T; 4. gdy system zostanie zamrożony, zwróć najlepszy znaleziony stan; Tabu Search 1. wybierz losowo stan początkowy; 2. przeszukuj przestrzeń stanów przez wykonywanie ruchów, pamiętając na liście Tabu ostatnio odwiedzone stany; aby wykonać ruch: wygeneruj zbiór sąsiadów, którzy nie figurują na liście Tabu; wykonaj ruch w stronę najlepszego znalezionego sąsiada; 3. powtarzaj krok 2) do momentu spełnienia warunku kończącego optymalizację; 4. zwróć najlepszy znaleziony stan;