31
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Základné výpočty relačných operátorov

Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

Základné výpočty relačných operátorov

Page 2: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2

Plán: Strom relačných operátorov s výberom algoritmu pre kazdy operátor. Each operator typically implemented using a `pull’ interface: when

an operator is `pulled’ for the next output tuples, it `pulls’ on its inputs and computes them.

Dva hlavné otazky optimalizácie dopytov Pre daní dopyt, Aké plány zvažujeme? Aké sú odhadované náklady na dopy?

Ideál: Chceme nájst najlepší plán. Prakticky: Chceme sa vyhnúť najhorším plánom

System R prístup – každý select do nejakej logiky

Základné výpočty relačných operátorov

Page 3: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 3

Zaužívané techniky Algoritmus na evaluaciu relačných operátorov

používa niekoľko jednoduchých ideí, hlavne(záleží od uloženia dát): Indexovanie: Používa WHERE konštrukciu na

získanie maleho množstva riadkov (selekcií, joinov) Iterácia: Niekedy je rychlejší table scan, akoby tam

mal byť index(a niekedy možeme využiť indexy )) Partitioning: Využitím triedenia a hashovania,

možme vstupné riadky rozdelit(na menšie dáta) a tym nahradiť drahšie operácie rovnakými ale na menšom vstupe

Page 4: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 4

Štatistiky a Metainformácie(Catalogs)

Potrebujeme informácie o reláciach a indexoch. Metainformácie typicky obsahujú aspoň:

– počet riadkou(NTuples) a počet strán (NPages) pre každú reláciu– počet kľúčov na indexoch(NKeys) a NPages pre každý index– výška indexu, najmenšia/najväčšia hodnota kľúča pre každý strom

indexu. Metainformácie sa updatuju pravidelne (periodicky)

updatovanie vždy ked sa dáta zmenia je príliž drahé Napr. keď je úpadok DB

Niekedy sú uložené aj viac detailnejšie informácie napr. Údaj o používateľoch a právach, histogramy hodnôt v niektorých poliach.

Page 5: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 5

Prístupové cesty Prístupova cesta je spôsob získavania riadkov

File scan alebo index , ktorý zodpovedá selekcii v dopyte tree index zodpovedá výrazom (konjunkcii), ktoré

obsahujú len atribúty v prefixe hľadacieho čísla napr. tree index na <a, b, c> zodpovedá selekcii a=5 AND b=3,

a a=5 AND b>6 ale nie b=3. hash index zodpovedá (konjunkcii) výrazom, ktoré

majú výraz atribút = hodnota pre každý atribút vo vyhľadavacom kľúči indexu napr hash index ona <a, b, c> zodpovedá a=5 AND b=3 AND

c=5; ale nezodpovedá b=3, alebo a=5 AND b=3, alebo a>5 AND b=3 AND c=5.

Page 6: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 6

Poznámka o komplexnosti selekcií

Podmienky selekcie sa najpr prevedú do konjunktivnej normálnej formy(CNF):

(day<8/9/94 OR bid=5 OR sid=3 ) AND

(rname=‘Paul’ OR bid=5 OR sid=3)

(day<8/9/94 AND rname=‘Paul’) OR bid=5 OR sid=3

Page 7: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 7

Jeden prístup k selekcii

Najdi najviac selektívnu prístupovú cestu, získaj riadky pomocou nej a aplikuj všetky výrazy, ktoré nezodpovedajú indexu: Najviac selektívna prístupová cesta: Aindex alebo file scan,ktory

predpokladáme, že bude vyžadovať najmenej I/O operácií. Výrazy,ktoré zodpovedajú tomuto indexu znižujú, počet

získaných riadkov; ine výrazy sa používajú na vyradenie niektorých získaných riadkov, ale nemajú efekt na počet získaných riadkov/stránok

Uvažujme day<8/9/94 AND bid=5 AND sid=3. Môžeme použiť B+ tree index na day ; potom, bid=5 a sid=3 musíme otestovať pre každý získaný riadok. Podobne môžeme použiť hash index na <bid, sid>; potom musím otestovať day<8/9/94

Page 8: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 8

Použitie indexov na selekty Cena závisí od počtu spĺňajúcich riadkov a klastrovania

Cena hľadania kvalifikovaných listových záznamov(tipicky malých) plus cena získaných záznamov (môže byť veľké w/o klastrovanie).

V príklade,za predpokladu rovnomerného rozdelenia mien, zodpovedá okolo 10% riadkov.(100 stránok 10000 riadkov). S klastrovaným indexom je cena niečo viac ako 100 I/O operácií; pri neklastrovanom viac ako 10000 I/O operácií

• Povodná tabuľka 1000 stránok Dôležité vylepšenia pre neklastrované indexy:

1. Nájsť kvalifikované listové záznamy 2. Udrieďiť podla rid 3. Zobraziť rid v poradí. Toto zaistuje,že každa stránka je prezeraná

práve raz.

Page 9: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 9

Prienik rid prístup :

Zoberieme množiny rid z dátových záznamov použitím každého indexu

Potom spravíme prienik množín Získame záznamy a použijeme všetky výrazy Príklad: Uvažujme day<8/9/94 AND bid=5 AND sid=3. Ak

máme B+ strom index na day a index na sid, obe používajúce Alternatívu (2), môžeme dostat rid záznamov zodpovedajúce day<8/9/94 pre prvý index a rid záznamov zodpvoedajúce sid=3 pre druhý index, spraviť prienik a získat záznami a potom spraviť kontrolu pre bid=5

Page 10: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 10

Projekcia Prístup založený na sortovaní:

Zmeniť Pass 0 externeho triedenia na elimináciu echcených polí. Tak je vyprodukovená sekvencia 2B stránok, ale riadky su menšie ako vo vstupnej sekvencií (Pomer veľkostí závisí od počtu a veľkosti polí, ktoré sú vynechané)

Zmeniť zlučovacie prechody na elimináciu duplicít. Takto počet výsledných riadkov je menši ako vstup(zmena závisý od počtu duplicít)

Cena: V Pass 0, prečítame pôvodnú reláciu(size M) , vypíšeme rovanke malé množstvo riadkov V zlučovacích prechodoch, menej riadkov sa vypiše pre každý prechod. príklad: 1000 vstupných stránok sa zredukuje na 250 v Pass 0 ak pomer velkosti je 0.25

SELECT DISTINCT R.sid, R.bidFROM Reserves R

Page 11: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 11

Projekcia založená na hash deliaca fáza : Prečítať R použitím vstupného buffra. Pre

každý riadok, odstraniť nežiadúce polia, aplikovať hash funkciu h1, aby sa vybral jeden z B-1 výstupných buffrov. Výsledok je B-1 particií (s riadkami so žiadnými neželanými

poliami). Dva riadky z rôzných particií zaručuju jedinečnosť.

B main memory buffers DiskDisk

Pôvodnárelácia Výstup

2Vstup

1

hashfunctionh B-1

Partície

1

2

B-1

. . .

Page 12: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 12

Projekcia založená na hashingu Deliaca fáza:: Prečitať R použitím niektorého vstupného buffra.

Pre každý riadok odstrániť neželané polia, aplikovať hash funkciu h1 na výber jedneho z B-1 výstupných bufforv

– Výsledok je B-1 particií (s riadkami so žiadnými neželanými poliami). Dva riadky z rôzných particií zaručuju jedinečnosť.

Zopakovať eliminačnú fázu: Každú particiu: prečítaťju a vytvoriť v pamäti hash tabulku použitím hash fn. h2 (<>h1) na všetky polia, čím sa odstrania duplicity.

– Ak sa particia nezmestí do pamäte, môžeme na ňu použiť rekurzívne projekčný algoritmus založený na hashy

Cena: Fpre delenie prečitač R, vypísať každý riadok s menším počtom poli. To je čítané v ďalšej fáze.

Page 13: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 13

Diskusia o projekcii Prístup založený na triedení je štandardom;Sort-based

approach is the standard; lepšia manipulácia so šikmými dátami a výsledok je usporiadaný

Ak index na relácii obsahuje všetky požadované atribúty v svojom kľúči, možeme robiť iba indexový sken. Apilukjeme techniky projekcie na listové dáta

Ak utriedený index obsahuje všetky požadované atribúty ako prefix kľúča možeme spraviť lepšie: Získať listové dáta usporiadane(index-only scan), odstrániť

nežiadúce polia, Retrieve data entries in order (index-only scan), discard unwanted fields, porovnať vedľajšie riadky na kontrolu duplicity.

Page 14: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 14

Vyhodnotenie relačných operácií (joiny)

Page 15: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 15

Relačné operácie Budeme zvažovať ako implementovať:

Selekcie ( ) vyberie podmnožinu riadkov z relacie Projekcie ( ) vymaže nežiadúce riadky z relácie Joiny ( ) povoľuje kombinovať dva relácie Set-difference ( ) riadky v relácií 1. ale nie v relácii 2. Zjednotenie ( ) riadky v relácii 1. aj v relácii 2. Agregácia (SUM, MIN, atď.) a GROUP BY

Odkedy každá operácia vracia reláciu, operácie môžeme skldať.

σπ

Page 16: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 16

Schéma príkladov

Podobná ako stará schéma; pridané rname Reserves:

– Každý riadok je 40 bytes dlhý, 100 riadkov na stránku, 1000 stránok.

Sailors:– Každý riadok je 50 bytes dlhý, 80 riadokv na stránku,

500 stránok.

Sailors (sid: integer, sname: string, rating: integer, age: real)Reserves (sid: integer, bid: integer, day: dates, rname: string)

Page 17: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 17

Equality Joins With One Join Column

V algebre: R S. Bežnosť! Musí byť opatrne optimalizované. R S je veľké; takže, R S nesledované po selekcii je neefektívne.

Predpokladajme: M riadkov v R, pR riadkov na stránku, N riadkov v S, pS riadkov na stránku. V našom príklade, R je Reserves a S je Sailors.

Komplexnejsie joiny budeme uvažovať neskôr. Cost metric: počet I/O operácií. Zvyšok ingorujeme

SELECT *FROM Reserves R1, Sailors S1WHERE R1.sid=S1.sid

×× ×

Page 18: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 18

Jednoduché vnorené joiny

Pre každý riadok vo vonkajsej R, skenujeme celú reláciu S Cena: M + pR * M * N = 1000 + 100*1000*500 I/Os.

Stránkovo orientované vnorené joiny:Page-oriented Nested Loops join: Pre každú stránku z R, dostaneme každú stránku z S, a vypíšeme zodpovedajúce dvojice riadkov <r, s>, kde r je v R-page a S je v S-page. Cena: M + M*N = 1000 + 1000*500 Ak menšia relácia je vonkajsia,cena = 500 + 500*1000

foreach tuple r in R doforeach tuple s in S do

if ri == sj then add <r, s> to result

Page 19: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 19

Indexové vnorené joiny

Ak je index na joinovanom stĺpci na jednej z relácií,môžeme z neho spraviť vonkajší a využiť index. Cena: M + ( (M*pR) * cost of finding matching S tuples)

Pre každý riadok R tuple, cena skúmaného S indexu je okolo 1.2 pre hash index, 2-4 pre B+ strom. Cena potom nájdených S riadkov zaleží na klastrovaní. Klastrovaný index: 1 I/O (typical), neklastrovaný: viac ako 1

I/O pre zodpovedajúce S riadky.

foreach tuple r in R doforeach tuple s in S where ri == sj do

add <r, s> to result

Page 20: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 20

Príklady vnorených indexov Hash-index (Alt. 2) on sid of Sailors (as inner):

Scan Reserves: 1000 page I/Os, 100*1000 tuples. For each Reserves tuple: 1.2 I/Os to get data entry in index,

plus 1 I/O to get (the exactly one) matching Sailors tuple. Total: 220,000 I/Os.

Hash-index (Alt. 2) on sid of Reserves (as inner): Scan Sailors: 500 page I/Os, 80*500 tuples. For each Sailors tuple: 1.2 I/Os to find index page with

data entries, plus cost of retrieving matching Reserves tuples. Assuming uniform distribution, 2.5 reservations per sailor (100,000 / 40,000). Cost of retrieving them is 1 or 2.5 I/Os depending on whether the index is clustered.

Page 21: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 21

Blokové vnorené joiny Použijeme jednu stránku ako vstupný bufer na skenovanie

vnútorného S, jednu stránku ako výstupný bufer, a ostatne stránky na blok vonkajšieho R Pre každú zodpovedajúce riadky r v R-blocku, s v S-stranke pridáme <r,s> do

výsledku. Potom prečítame ďalší R-block, prečítame S, atď. F

. . .. . .

R & SHash table for block of R

(k < B-1 pages)

Input buffer for S Output buffer

. . .

Join Result

Page 22: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 22

Príklady blokových vnorených cyklov Cena: Scan of outer + #outer blocks * scan of inner

počet vonkajších blokov = počet vonkalších/veľkosť bloku S Reserves (R) ak vonkajší, a 100 stránok z R:

Cena skenovania R je 1000 I/Os; celkovo 10 blokov. Na jeden blok R, skenujeme Sailors (S); 10*500 I/Os. Ak je miesto len pre 90 stránok z R, budeme skenovat S 12 krát.

So 100-stránkovým blokom z Sailors ak vonkajšok: Cena skenovania S je 500 I/Os; celkový počet 5 blokov.

Na jeden blok S, skenujeme Reserves; 5*1000 I/Os. Ak berieme do úvahy sekvenčné čítanie sa analýza mení:

najlepšie je rozdelit bufre rovnomerne medzi R a S

Page 23: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 23

Sort-Merge Join (R S) Usporiadať R a S na joinovanom stĺpci,potom ich

oskenovať a spravit merge a dať na výstup riadky Advance scan of R until current R-tuple >= current S tuple,

then advance scan of S until current S-tuple >= current R tuple; do this until current R tuple = current S tuple.

At this point, all R tuples with same value in Ri (current R group) and all S tuples with same value in Sj (current S group) match; output <r, s> for all pairs of such tuples.

Potom pokračujeme skenovaním R a S R je skenované raz;každá skupin S je skenovaná raz

pri vyhovujúcom riadku.

i=j

Page 24: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 24

Príklad Sort-Merge Join

Cena: M log M + N log N + (M+N) Cena skenovania, M+N, može byť M*N (veľmi nežiadané!)

S 35, 100 alebo 300 stránkami bufra, obe Reserves a Sailors môžu býť usortené v dvoch prechodoch, celková cena joinu:7500.

sid sname rating age22 dustin 7 45.028 yuppy 9 35.031 lubber 8 55.544 guppy 5 35.058 rusty 10 35.0

sid bid day rname28 103 12/4/96 guppy28 103 11/3/96 yuppy31 101 10/10/96 dustin31 102 10/12/96 lubber31 101 10/11/96 lubber58 103 11/12/96 dustin

(BNL cost: 2500 to 15000 I/Os)

Page 25: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 25

Zdokonalenie Sort-Merge Joinu Môžeme kombinovať mergovacie fázi v triedení R a S s

mergovaním potrebním pre join S B> , kde L je veľkosť väčšej relácie, použitím vylepšenia

triedenia ktore produkuje veľkost 2B v Pass 0, počet prebehnutí relácie je <B/2

Alokovat 1 stránku počas každého prechodu relácie a spraviť merge počas kontroli joinovacej podmienky

Cena: čítanie+zápis každej relácii v Pass 0 + čítanie každej relácii v mergovacom prchode(+ vý pis výsledných riadkov).

V príklade, cena ide dole z 7500 na 4500 I/Os. V praxi, cena sort-marge joinu ako cena externeho

triedenia je lineárna.

L

Page 26: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 26

Hash-Join Particia oboch

relácií používa ako hash funkciu h: Riadky R v particii I budu priradené riadkom S v particii I.

Čítať v particii R, použiť hash funkciu h2 rôznu od h. Zoskenovať výsledky S, vyhľadať zhody

Partitionsof R & S

Input bufferfor Si

Hash table for partitionRi (k < B-1 pages)

B main memory buffersDisk

Output buffer

Disk

Join Result

hashfnh2

h2

B main memory buffers DiskDisk

Original Relation OUTPUT

2INPUT

1

hashfunctionh B-1

Partitions

1

2

B-1

. . .

Page 27: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 27

Pozorovania Hash-Join

počet particií k <B-1 (prečo?), a B-2 > veľkosť najväčšej particie vykonávaná v pamäti. Za predpokladu rovnomerne veľkých particií a maximálnom k, dostaneme k= B-1, a M/(B-1) < B-2, tj., B musí byť >

Ak využijeme v pamäti vstavanú hash tabuľku na zrýchlenie priraďovania riadkov, je potrebné využiť viac pamäte

Ak hash funkcia nevytvára particie rovnomerne, jedna alebo viac R particií sa nezmestí do pamäte. Môžeme využiť hash-join techniku rekurzivne na vytvorenie joinu R particie s korešpondujúcou S particiou

M

Page 28: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 28

Cena Hash-Join

Vo fáze delenia, čítanie +zápis obe relácie; 2(M+N). V priraďovacej fáze, čítanie obe relácie; M+N I/Os. V našom príklade je to spolu 4500 I/Os. Sort-Merge Join vs. Hash Join:

Ak je dané minimum pamäte , obe majú cenu 3(M+N) I/Os. Hash Join je dokonalejší v tom to prípade ak sa veľkosť relácie značne líši.

Sort-Merge menej citlivý na šikmé dáta; výsledok je usporiadaný

Page 29: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 29

Všebecne podmienky pre Join Rovnosti pre viac atribútov(napr., R.sid=S.sid AND

R.rname=S.sname): Pre Index NL, vstavaný index na <sid, sname> (ak S je vnútorní);

alebo použijeme existujúce indexi na sid alebo sname. Pre Sort-Merge a Hash Join, triedenie/particia na kombinácii

dvoch joinovaných stĺpcoch. Nerovnostné podmienky (napr., R.rname < S.sname):

Pre Index NL, potrebujeme (klastrovaný!) B+ tree index. Hash Join, Sort Merge Join neaplikovateľné. Block NL zrejme najvhodnejšia join metoda.

Page 30: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 30

Množinové operácie

prienik a karteziánsky súčin . Union (Distinct) a Except sú podobné; spravíme Union. Triediaci prístup pre union

Utriediť obe relácie. Prejst utriedené relácie a mergovat ich Alternatíva: Zmergovať prechodi z Pass 0 pre obe relácie.

Prístup založený na hash pre union: Particie R a S používaju hashovaciu funkciu h. Pre každú S-partíciu, vytvoriť v pamäti hash tabuľku(použitím

h2), zoskenovať R-partíciu a pridať riadky do tabuľky bez duplikátov

Page 31: Základné výpočty relačných operátorovgursky/pd/slidy2010/prednaska4.pdf · 2010. 12. 6. · Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Plán: Strom relačných

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 31

Agregačné operácie(AVG, MIN, atď.) Bez zoskupovania:

Vo všeobecnosti vyžaduju zoskenovanie relácie Ak je daný index, ktorého kľuč obsahuje všetky atributy v SELECTe

alebo WHERE končtrukcii, môžeme robiť len index-only sken Zo zoskupovaním:

Usporiadať group-by atribúty, potom zoskenovať reláciu a vyšetriť agregácie pre každú skupinu (Može byť vylepšené tým, že kombinujeme triedeni a vykonávanie agregácií)

Podobný prístup na základe hashingu na group-by atribútoch Pridaním tree indexu, ktorého vyhľadávací kľúč zahŕňa všetky atribúty

v SELECT, WHERE a GROUP-BY klauzulách, môžeme robit index-only sken; ak group-by atribúty vytváraju prefix vyhľadávacieho kľúča môžeme dostat listové dáta/riadky v group-by poradí.