Bazy danych

Transkrypt

Bazy danych
2011-01-20
PLAN WYKŁADU
Pojęcie optymalizacji
Etapy wykonywania zapytania
 Etapy optymalizacji
 Rodzaje optymalizacji
 Reguły transformacji
 Procedury implementacyjne
 Koszty


BAZY DANYCH
Wykład 11
dr inż. Agnieszka Bołtuć
OPTYMALIZACJA ZAPYTAŃ
Optymalizacją zapytania nazywamy wybór
najlepszej spośród wielu możliwych strategii
wykonania zapytania,
 Optymalizacja jest jednym z etapów
przetwarzania zapytania,
 Poprzedzona jest odczytaniem, analizą składniową
oraz weryfikacją zapytania,
 Nazwa optymalizacja jest nadana na wyrost, gdyż
jesteśmy jedynie pewni że znaleziona strategia jest
lepsza od wyjściowej, ale nie zawsze najlepsza.

ETAPY PRZETWARZANIA ZAPYTANIA
Zapytanie w języku wysokiego poziomu
Odczyt,
analiza składniowa
i weryfikacja
Zapytanie w postaci pośredniej
Optymalizator
zapytań
Plan wykonania
Generator kodu
zapytań
Kod wykonania zapytania
Wykonawczy
procesor
bazy danych
Wynik zapytania
1
2011-01-20
KLASYFIKACJA METOD OPTYMALIZACJI
PRZYKŁAD
Zapytanie SQL:


Statyczna
Dynamiczna
SELECT Nazwisko FROM Dostawy JOIN
Handlowcy WHERE nr_czesci=1;
Wyrażenie w postaci algebry relacyjnej:
Optymalizacja pojedynczego zapytania
 Optymalizacja zbioru zapytań
π Nazwisko (σnr_czesci= 1(Dostawy
PRZYKŁAD - REALIZACJA
PRZYKŁAD - REALIZACJA
Bezpośrednia – bez optymalizacji
 Złączenie tabel względem nr_czesci – wymaga
odczytu dla każdej dostawy tabeli handlowcy,
zapisania złączonych krotek na dysk,
 Restrykcja na otrzymanym po złączeniu wyniku
do krotek z numerem części równym 1,
 Rzutowanie wyniku na atrybut Nazwisko.
Z optymalizacją
 Restrykcja na relacji Dostawy do krotek odnoszących
się do części nr 1,
 Złączenie wyniku kroku 1 z relacja Handlowcy,
 Rzutowanie wyniku kroku 2 na atrybut Nazwisko,

Jeśli tabela Dostawy zawiera 10000 krotek a tabela
Handlowcy 100, zaś tylko 50 krotek dotyczy części nr
1 to zapytanie to wymaga ponad 1000000 operacji
wejścia- wyjścia.
=
Handlowcy))
Jeśli tabela Dostawy zawiera 10000 krotek a tabela
Handlowcy 100 , zaś tylko 50 krotek dotyczy części nr 1 to
zapytanie to wymaga ponad 10000 operacji wejściawyjścia.
Wynik można poprawić zakładając indeks na pole
nr_części w tabeli Dostawy. Wówczas liczba operacji
wyniosłaby 150.
2
2011-01-20
ETAPY PROCESU OPTYMALIZACJI
ETAP 1 – SFORMUŁOWANIE ZAPYTANIA
1. Sformułowanie zapytania w wewnętrznej
reprezentacji

Konwersja zapytania do pewnej reprezentacji
wewnętrznej, która bardziej nadaje się do obróbki
maszynowej,

Wybór formalizmu na którym ta postać będzie się
opierała: musi dawać możliwość reprezentacji
dowolnych żądań, powinien być neutralny,
4. Plany realizacji zapytania i wybór
najefektywniejszego rozwiązania

Najczęściej wybiera się tzw. drzewo zapytania, ale
także formalizmy algebry relacyjnej czy rachunku
relacyjnego,
ETAP 2 – PRZEKSZTAŁCENIE
ETAP 3 – WYBÓR KANDYDATÓW
Język SQL pozwala formułować zapytania na wiele
sposobów, zaś wydajność zapytania nie powinna
zależeć od postaci w jakiej zostało zapisane przez
użytkownika,
 Etap ten polega na przekształceniu aktualnej
postaci wewnętrznej do równoważnej mu postaci
kanonicznej,
 Celem przekształcenia jest znalezienie
wydajniejszej reprezentacji,
 Aby dokonać przekształcenia optymalizator używa
tzw. reguł transformacji.

2. Przekształcenie do postaci kanonicznej
3. Wybór kandydatów do procedur
implementacyjnych





Na tym etapie zapada decyzja o sposobie wykonania
przekształconego zapytania,
Na wyrażenie stanowiące zapytanie należy spojrzeć jak
na szereg operacji złączenia, restrykcji, etc. z pewnymi
współzależnościami pomiędzy nimi,
Dla każdej takiej operacji optymalizator posiada zestaw
wcześniej zdefiniowanych procedur
implementacyjnych,
Z każdą procedurą związany jest wzór do obliczania
kosztu wskazujący koszt jej realizacji (najczęściej w
jednostkach we-wy),
Optymalizator wybiera jedną lub więcej procedur
implementujących każdą z operacji – ten proces nazywa
się wyborem ścieżki dostępu.
3
2011-01-20
ETAP 4 – PLANY I WYBÓR
TRANSFORMACJA WYRAŻEŃ
Tworzony jest zbiór różnych planów wykonania
zapytania oraz wybierany jest najlepszy,
 Nie należy tworzyć wszystkich możliwych planów
dla danego zapytania, bo wiąże się to ze
zwiększeniem kosztu znalezienia najlepszego,
 Wybór najefektywniejszego planu dokonuje się na
bazie jego kosztu będącego sumą kosztów
poszczególnych procedur – może to stanowić
problem, gdyż koszty w dużej mierze zależą od
rozmiaru danych.

RESTRYKCJE I RZUTY
RESTRYKCJE I RZUTY


Sekwencja restrykcji
z operatorem AND
pojedyncza restrykcja
Restrykcje i rzuty
Rozdzielność
 Przemienność i łączność
 Idempotentność
 Skalarne wyrażenia obliczeniowe
 Wyrażenia warunkowe
 Przekształcenia semantyczne


Restrykcja rzutu
rzut restrykcji
(A [rzut]) WHERE restrykcja
(A WHERE restrykcja_1) WHERE restrykcja_2
A WHERE restrykcja_1 AND restrykcja_2

Sekwencja rzutów
oprócz ostatniego
(A WHERE restrykcja) [rzut]
pomijanie wszystkich
(A [rzut_1]) [rzut_2]
A [rzut_2]
4
2011-01-20
ROZDZIELNOŚĆ
ROZDZIELNOŚĆ

Operator restrykcji jest rozdzielny względem sumy
przecięcia i różnicy, a także złączenia jeśli warunek
restrykcji dla dwóch argumentów operatora JOIN
jest co najwyżej dwiema różnymi restrykcjami
połączonymi operatorami AND,

Operator rzutu jest rozdzielny względem sumy i
przecięcia, nie różnicy, jest też rozdzielny
względem złączenia jeśli wszystkie atrybuty
złączenia znajdują się w rzucie.
Operator monadyczny (jednoargumentowy) f jest
rozdzielny względem operatora diadycznego , jeżeli
f(A
B) = f(A) f(B)
dla każdego A i B.
PRZEMIENNOŚĆ I ŁĄCZNOŚĆ

Operator diadyczny jest przemienny
PRZEMIENNOŚĆ I ŁĄCZNOŚĆ
, jeżeli

Operator diadyczny jest łączny
A B=B A
A
dla każdego A i B.
dla każdego A,B i C.

Przemienne są: suma, przecięcie i złączenia, nie
jest różnica i iloraz.

(B
C) = (A
B)
, jeżeli
C
Łączne są: suma, przecięcie i złączenia, nie jest
różnica i iloraz.
5
2011-01-20
IDEMPOTENTNOŚĆ

Operator diadyczny jest idempotentny
SKALARNE WYRAŻENIA OBLICZENIOWE
, jeżeli

Transformacje obowiązują także dla wyrażeń
arytmetycznych
A A=A
A* B +A* C
dla każdego A i B.
A * (B + C)

Idempotentne są: suma, przecięcie i złączenia, nie
jest różnica i iloraz.
W YRAŻENIA WARUNKOWE

Przekształcenia można oprzeć na fakcie, że
operator „>” jest przechodni
np. A>B AND B>3
A>B AND B>3 AND A>3

Każde wyrażenie warunkowe można przekształcić
do równoważnego wyrażenia tzw. koniunktywnej
postaci normalnej (z ang. CFN)
C1 AND C2 AND … AND Cn
gdzie Ci jest wyrażeniem warunkowym bez AND.
W YRAŻENIA WARUNKOWE
Np. A>B OR (C=D AND E<F)
(A>B OR C=D) AND (A>B OR E<F)

Zalety CNF:
 Wyrażenie jest prawdziwie, gdy każdy człon jest
prawdziwy, to samo z fałszywym,
 Ponieważ AND jest przemienny można obliczać
wyrażenia w dowolnej kolejności, co daje duże
pole do popisu (od najłatwiejszego do
najtrudniejszego bądź równolegle).
6
2011-01-20
PRZEKSZTAŁCENIA SEMANTYCZNE
IMPLEMENTACJA OPERACJI SELECT

Jest to przekształcenia, które jest poprawne jedynie
ze względu na fakt, iż działa jakiś warunek
integralności,
 Optymalizację semantyczną można zdefiniować
jako proces przekształcenia jednego zapytania w
inne, które na pewno da ten sam wynik, dlatego że
dane muszą spełniać więzy integralności,
 Niewiele komercyjnych produktów korzysta z tego
rodzaju optymalizacji, jednak może ona dać
znaczące zwiększenie wydajności.

IMPLEMENTACJA OPERACJI SELECT
IMPLEMENTACJA OPERACJI SELECT


użycie indeksu klastrowania w celu wybrania
wielu rekordów – warunek wyboru zawiera
porównanie równościowe na atrybucie
niekluczowym z indeksem klastrowania,
użycie indeksu drugorzędnego (B+-drzewa)
na porównaniu równościowym – jeśli pole
indeksujące jest kluczem głównym to pobieramy
pojedynczy rekord, jeśli nie jest to wiele
rekordów,

Proste operacje wybierania
 wyszukiwanie liniowe – metoda siłowa
 wyszukiwanie binarne – jeśli warunek wyboru
jest warunkiem równościowym na kluczu
głównym, bardziej efektywna od liniowego
 użycie indeksu głównego - jeśli warunek
wyboru jest warunkiem równościowym na kluczu
głównym z indeksem, warunek powoduje
wybranie najwyżej jednego rekordu,
 użycie indeksu głównego do pobrania wielu
rekordów – jeśli warunkiem porównania jest
relacja >,>=,<,<=, wybieramy najpierw rekord
równy warunkowi i później resztę według relacji,
Złożone operacje wybierania
 wybór koniunktywny przy użyciu
pojedynczego indeksu – używamy metod od 2
do 6 do wyboru rekordów według pojedynczego
warunku prostego, później sprawdzamy czy
każdy pobrany rekord spełnia pozostałe warunki
proste,
 wybór koniunktywny przy użyciu indeksu
złożonego – dotyczy przypadków gdy warunki
równości dotyczą dwóch lub więcej atrybutów i
na połączonych polach istnieje indeks złożony,
7
2011-01-20
IMPLEMENTACJA OPERACJI SELECT
IMPLEMENTACJA OPERACJI JOIN
Selektywność (s) – współczynnik liczby rekordów,
które spełniają warunek do całkowitej liczby
rekordów w pliku (relacji) – s stanowi wartość z
przedziału od 0 do 1,
 np. dla warunku równościowego na atrybucie
klucza głównego s=1/r, gdzie r oznacza liczbę
krotek w relacji, bądź dla warunku równościowego
na atrybucie o i odrębnych wartościach s=(r/i)/r lub
s=1/i przy założeniu że rekordy są równomierne
rozłożone między różne wartości,

IMPLEMENTACJA OPERACJI JOIN
IMPLEMENTACJA OPERACJI RZUTOWANIA



złączenie sortująco-scalające – posiadamy fizycznie
posortowane rekordy obu plików według atrybutu złączenia
(lub sortujemy je z użyciem sortowania zewnętrznego), oba
pliki przeglądane są równolegle w kolejności atrybutów
złączenia i dopasowywane są rekordy posiadające te same
wartości dla atrybutu łączącego,
złączenie mieszające – rekordy z obu plików podlegają
działaniu tej samej funkcji mieszającej na atrybutach
złączenia i są zapisywane w jednym pliku, faza podziału –
stosujemy technikę mieszania na rekordach pliku mniej
licznego i zapisujemy je w pakietach pliku mieszającego, faza
sprawdzania – w pojedynczym przejściu przez drugi plik
używamy f. mieszającej na każdym rekordzie w celu
sprawdzenia pakietu i rekord zostaje połączony z wszystkimi
odpowiadającymi mu rekordami z pierwszego pliku
znajdującymi się w danym pakiecie.
złączenie pętli zagnieżdżonych – metoda siłowa,
dla każdego rekordu z jednego pliku pobieramy
każdy rekord z drugiego pliku,
 złączenie z pętlą pojedynczą – używamy strukturę
dostępową w celu pobrania pasujących rekordów,
jeśli na jednym atrybucie w jednym pliku istnieje
indeks to pobieramy każdy rekord z drugiego pliku
(po jednym naraz) i używamy struktury dostępowej
w celu pobrania pasujących rekordów z pierwszego
pliku spełniających warunek złączenia,

Jeśli <lista atrybutów> rzutowania zawiera klucz
główny relacji to implementacja jest prosta – wynik
zawiera tą samą liczbę krotek co relacja, ale każda
krotka składa się tylko z atrybutów z listy,

Jeśli <lista atrybutów> nie zawiera klucza głównego
relacji to należy wyeliminować duplikaty krotek za
pomocą sortowania.
8
2011-01-20
IMPLEMENTACJA OPERACJI
IMPLEMENTACJA OPERACJI
TEORIOMNOGOŚCIOWYCH
TEORIOMNOGOŚCIOWYCH
Iloczyn kartezjański – bardzo kosztowny, zawiera
m*n rekordów oraz j+k atrybutów, należy unikać lub
zastępować,
 Suma, różnica i przecięcie mogą być
implementowane za pomocą dwóch technik:
sortująco-mieszającej oraz mieszania:
 Technika sortująco-mieszająca – dwie relacje
zostają posortowane i jednokrotnie przejrzane w
celu ustalenia wyniku, np. w przypadku sumy –
w wyniku zapisujemy scalone pliki, przy czym
powtarzające się krotki tylko raz,

IMPLEMENTACJA OPERACJI AGREGUJĄCYCH
IMPLEMENTACJA ZŁĄCZENIA ZEWNĘTRZNEGO




Gdy na atrybucie poddawanym operacji MIN lub MAX
istnieje indeks to optymalizator za jego pomocą
bezpośrednio odnajduje wartość minimalną lub
maksymalną, jeśli nie istnieje indeks to dokonujemy
pełnego przeglądu tabeli,
Dla funkcji COUNT, AVG i SUM można również
wykorzystać indeks, ale tylko w przypadku gdy jest on
zagęszczony,
W przypadku klauzuli GROUP BY najpierw stosowane
jest sortowanie lub mieszanie na atrybutach
grupujących w celu podziału na grupy, później
zastosowanie funkcji agregującej dla krotek w każdej
grupie, jeśli na atrybutach grupowania mamy indeks
klastrowania są one od początku podzielone na
odpowiednie podobszary.
Technika mieszania – jedna z tabel zostaje
podzielona, druga zaś używana jest w celu
sprawdzania odpowiedniej partycji, np. w
przypadku przecięcia dzielimy rekordy jednej tabeli
zapisując je w pliku mieszającym, następnie
poddajemy działaniu funkcji mieszającej każdy
rekord drugiej tabeli i sprawdzamy czy w pakiecie
jest identyczny rekord jeśli tak zapisujemy go w
wyniku.

Realizowane przez modyfikację algorytmu
złączeniowego: pętli zagnieżdżonych lub z pętlą
pojedynczą,

Np. w przypadku złączenia lewostronnego
używamy lewej relacji jako pętli zewnętrznej lub
pojedynczej, bo każda krotka z tej relacji musi
znaleźć się w wyniku.
9
2011-01-20
SKŁADOWE KOSZTU WYKONYWANIA
ZAPYTANIA

Koszt dostępu do drugorzędnych mechanizmów
składowania danych – najważniejsze w przypadku
dużych baz danych,

Koszt składowania,

Koszt obliczeniowy - najważniejsze w przypadku
małych baz danych,

Koszt zużycia pamięci,

Koszt komunikacji - najważniejsze w przypadku
rozproszonych baz danych.
KATALOG A FUNKCJE KOSZTU
Ważne informacje przechowywane w katalogu SZBD:
Rozmiar pliku a więc: liczba rekordów (r), rozmiar
rekordu (R), liczba bloków (b), współczynnik
blokowy (bfr),
 Informacje o metodach dostępu oraz atrybutach
dostępu, indeksach drugorzędnych, liczbie
poziomów indeksu wielopoziomowego, etc.,
 Liczba odrębnych wartości atrybutu (d) oraz jego
selektywność (sl) – liczność selekcji s=sl*r.

FUNKCJE KOSZTU DLA SELECT
FUNKCJE KOSZTU DLA SELECT
Funkcje kosztu w kontekście liczby przesyłanych
bloków między pamięcią a dyskiem:

Wyszukiwanie liniowe: C=b, gdy warunek
równościowy na kluczu to średnio C=b/2,
 Wyszukiwanie binarne: C=log2b-ceiling(s/bfr)-1,
jeśli warunek równościowy dotyczy klucza C=log2b,
 Indeks główny lub klucz mieszający do pobrania
jednego rekordu: C=x+1, gdzie x to liczba
poziomów indeksu,

Indeks uporządkowania do pobrania wielu
rekordów: zgrubnie C=x+(b/2),
 Indeks klastrowania do pobrania wielu
rekordów: C=x+ceiling(s/bfr),
 Indeks drugorzędny (B+-drzewo): dla
najgorszego przypadku C=x+s, C=x+1 gdy mamy
atrybut indeksujący klucza, dla warunku
porównania innego niż równościowy
C=x+(b1/2)+(r/2),
10
2011-01-20
UŻYCIE FUNKCJI KOSZTU
Dane:
plik Pracownik, liczba rekordów r=10000, liczba
bloków b=2000, współczynnik blokowy bfr=5,
 Ścieżki dostępu:
 Indeks klastrowania na atrybucie Pensja, liczba
poziomów x=3, średnia liczebność selekcji s=20,
 Indeks drugorzędny na trybucie klucza PESEL,
x=4, s=1,
 Indeks drugorzędny na trybucie niekluczowym
NRDZ, x=2, b1=4, d=125, s=(r/d)=80,
UŻYCIE FUNKCJI KOSZTU



Drugorzędny indeks na atrybucie Płeć, x=1, d=2,
s=5000,
Przykłady:
σPESEL= ‘45122345609’(Pracownik)
 σNRDZ>5(Pracownik)
 σNRDZ=5(Pracownik)
 σNRDZ=5 AND Pensja>30000 AND Płeć=‘k’(Pracownik)

UŻYCIE FUNKCJI KOSZTU
UŻYCIE FUNKCJI KOSZTU
Przykład 1:
metoda nr 1 – C=b=2000 lub C=b/2=1000,
metoda nr 6 – C=x+1=4+1=5
 Przykład 2:
metoda nr 1 – C=b=2000
metoda nr 6 –
C=x+(b1/2)+(r/2)=2+(4/2)+(10000/2)=5004
 Przykład 3:
metoda nr 1 – C=b=2000
metoda nr 6 – C=x+s=2+80=82


Przykład 4:
gdy jako pierwszy rozpatrujemy warunek NRDZ=5 –
C=82,
gdy jako pierwszy Pensja>30000 –
C=x+(b/2)=3+(2000/2)=1003,
gdy jako pierwszy Płeć=‘k’ – C=x+s=1+5000=5001,
Warunek NRDZ=5 jest używany do pobrania
rekordów, pozostałe są sprawdzane pod względem
każdego wybranego rekordu po ich pobraniu do
pamięci.
11
2011-01-20
W YKŁAD PRZYGOTOWANO NA PODSTAWIE
R. Elmasri, S. B. Navathe, Wprowadzenie do
systemów baz danych, Helion, 2005,
 C. J. Date, Wprowadzenie do systemów baz
danych, WNT, Warszawa, 2000,
 http://wazniak.mimuw.edu.pl/index.php?title=Bazy_
danych.

12

Podobne dokumenty