Lekérdezések feldolgozása és optimalizálása



Hasonló dokumentumok
Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Marton József BME-TMIT. Adatbázisok VITMAB november 11.

RELÁCIÓS LEKÉRDEZÉSEK OPTIMALIZÁLÁSA. Marton József november BME TMIT

RELÁCIÓS LEKÉRDEZÉSEK OPTIMALIZÁLÁSA. Dr. Gajdos Sándor november BME TMIT

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Relációs algebra lekérdezések optimalizációja. Adatbázisok használata

Funkcionális függések lekérdezések feldolgozása, kifejezésfák

Relációs algebra 1.rész alapok

17. A 2-3 fák és B-fák. 2-3 fák

Adatbázisok elmélete

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Adatbázis, adatbázis-kezelő

Lekérdezések optimalizálása

Adatbázis rendszerek 2. előadás. Relációs algebra

Nem klaszterezett index. Klaszterezett index. Beágyazott oszlopok. Index kitöltési faktor. Indexek tulajdonságai

Nem klaszterezett index. Beágyazott oszlopok. Klaszterezett index. Indexek tulajdonságai. Index kitöltési faktor

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

1. Az Oracle adatbázis-kezelő felépítése, működése, komponensei, példányok, rendszerállományok, memóriakezelése, rendszergazdai feladatok

Párhuzamosítás adatbáziskezelő rendszerekben

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

Adatbázisműveletek és lekérdezésoptimalizálás

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

10. előadás Speciális többágú fák

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Lekérdezések az SQL-ben 1.rész

2018, Funkcionális programozás

Lekérdezések az SQL-ben 2.rész

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Adatbáziskezelés. Indexek, normalizálás NZS 1

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adatbázis rendszerek 7. Matematikai rendszer amely foglal magában:

Lekérdezések az SQL-ben 1.rész

Adatbázis rendszerek 2. előadás. Relációs algebra

SQL bevezetés. Select-From-Where záradékok Több relációt tartalmazó lekérdezések Alkérdések

Funkcionális függések lekérdezések feldolgozása, kifejezésfák

Relációs adatmodell. Adatbázisok használata

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Adatbázisok elmélete

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

Mveletek a relációs modellben. A felhasználónak szinte állandó jelleggel szüksége van az adatbázisban eltárolt adatok egy részére.

A TANTÁRGY ADATLAPJA

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

ABR ( Adatbázisrendszerek) 2. Előadás : Műveletek a relációs modellben

Tankönyv példák kidolgozása

Adatbázis Rendszerek

Bevezetés a programozásba. 5. Előadás: Tömbök

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 28.

SELECT. SELECT(projekció) FROM(forrás) WHERE(szűrés) GROUPBY(csoportosítás) HAVING(csoportok szűrése) ORDERBY(rendezés)

A félév során előkerülő témakörök

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

ABR ( Adatbázisrendszerek) 1. Előadás : Műveletek a relációs medellben

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.

Adatbázis-kezelés. 3. Ea: Viszonyított betűszámtan (2013) Relációs algebra alapok (átgondolt verzió) v: Szűcs Miklós - ME, ÁIT. 1.

TABLE ACCESS FULL HASH CLUSTER BY INDEX ROWID BY USER ROWID BY GLOBAL INDEX ROWID BY LOCAL INDEX ROWID

1. Mondjon legalább három példát predikátumra. 4. Mikor van egy változó egy kvantor hatáskörében?

ADATBÁZISOK ELMÉLETE 5. ELŐADÁS 3/22. Az F formula: ahol A, B attribútumok, c érték (konstans), θ {<, >, =,,, } Példa:

Adatmodellezés. 1. Fogalmi modell

Halmazok Halmazok, részhalmaz, halmazműveletek, halmazok elemszáma

Adatbázisok 1. Kósa Balázs gyakorlata alapján Készítette: Nagy Krisztián. 1. gyakorlat

Informatikus informatikus Térinformatikus Informatikus É 1/6

Adatbázisok elmélete 9. előadás

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Adatbázisok* tulajdonságai

Alapvető fizikai tárolási szerkezetek, indexek, B-fák

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Listák, szótárak, fájlok Listák, szótárak, fájlok

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

4. előadás. Relációalgebra és relációkalkulusok. Adatbázisrendszerek előadás október 10.

Adatszerkezetek 7a. Dr. IványiPéter

Adatbázisok elmélete 9. előadás

Adatszerkezetek 1. előadás

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

7. Gyakorlat A relációs adatmodell műveleti része

Adatbázisok elmélete 9. előadás

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Algoritmusok és adatszerkezetek 2.

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Relációs adatbázisok tervezése ---2

Egyszerű programozási tételek

Relációs algebra 1.rész

Adatbázis-kezelés. alapfogalmak

Gyakori elemhalmazok kinyerése

Adatbázisok I A relációs algebra

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Relációs algebra 2.rész példák

Átírás:

Lekérdezések feldolgozása és optimalizálása

Definíciók Lekérdezés feldolgozása lekérdezés lefordítása alacsony szintű tevékenységekre lekérdezés kiértékelése adatok kinyerése Lekérdezés optimalizálása a leghatékonyabb lekérdezés-kiértékelési módszer kiválasztása Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 2

Lekérdezés feldolgozása (1/2) SELECT * FROM student WHERE name='paul' Elemezzük a lekérdezést és lefordítjuk ellenőrizzük a szintaxist, neveket stb. lefordítjuk relációs algebrára (RDBMS) elkészítjük a kiértékelési terveket Megkeressük a legjobb tervet (optimalizáció) Végrehajtjuk a tervet student takes course cid name cid courseid courseid coursename 00112233 Paul 00112238 Rob 00112235 Matt 00112233 312 00112233 395 00112235 312 312 Advanced DBs 395 Machine Learning Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 3

Lekérdezés feldolgozása (2/2) lekérdezés elemző és fordító relációs algebrai kifejezés optimalizáló kimenet kiértékelő motor kiértékelési terv adatok adatok adat statisztika Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 4

Relációs algebra (1/2) Lekérdező nyelv Műveletek: kiválasztás: σ vetítés: π unió: különbség: - szorzat: x összekapcsolás: Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 5

Relációs algebra (2/2) SELECT * FROM student WHERE name=paul σ name=paul (student) π name ( σ cid<00112235 (student) ) π name (σ coursename=advanced DBs ((student cid takes) courseid course) ) student takes course cid name cid courseid courseid coursename 00112233 Paul 00112238 Rob 00112235 Matt 00112233 312 00112233 395 00112235 312 312 Advanced DBs 395 Machine Learning Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 6

Miért optimalizáljunk? Sokféle lehetőségünk van egy lekérdezés kiértékelésére π name (σ coursename=advanced DBs ((student cid takes) courseid course) ) π name ((student cid takes) courseid σ coursename=advanced DBs (course)) ) Több lehetőség egy művelet elvégzésére σ name=paul (student) fájlban keresés másodlagos index a student.name mezőn Több elérési útvonal elérési útvonal: mely módon érhetjük el a rekordokat Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 7

Kiértékelési utak Adjuk meg, melyik elérési útvonalat használjuk Adjuk meg, milyen algoritmussal értékeljük ki a műveleteket Adjuk meg, hogyan váltakoznak a műveletek Optimalizáció: becsüljük meg a tervek költségét (nem mindet) válasszuk a legalacsonyabb becsült költségűt σ name=paul ; i index használata π name σ coursename=advanced DBs l courseid; indexskatulyázott ciklus student σ name=paul cid; hasításos course összekapcsolás student student takes Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 8

Költségbecslés Mit kell számításba venni: Lemez I/O szekvenciális tetszőleges CPU idő Hálózati kommunikáció Mit fogunk figyelembe venni: Lemez I/O lapok olvasása, írása Elhanyagoljuk a végeredmény kiírásának költségét Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 9

Műveletek és költségek

Műveletek és költségek (1/2) Műveletek: σ, π,,, -, x, Költségek: N R : R rekordjainak száma L R : R egy rekordjának mérete F R : blokkolási tényező egy lapon levő rekordok száma B R : az R reláció tárolásához szükséges lapok száma V(A,R): az A mező különböző értékeinek száma R-ben (Képméret) SC(A,R): az A mező kiválasztási számossága R-ben (Szelektivitás) A kulcs: S(A,R)=1 A nem kulcs: S(A,R)= N R / V(A,R) HT i : az i index szintjeinek száma a törteket és logaritmusokat felfelé kerekítjük Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 11

Műveletek és költségek (2/2) takes reláció 700 rekord hallgató cid 8 bájt kurzus id 4 bájt 9 kurzus 100 hallgató lapméret: 512 bájt a kimenet mérete (lapokban) erre a lekérdezésre: mely hallgatók vették fel az 'Advanced DBs' kurzust? N takes = 700 V(courseid, takes) = 9 SC(courseid,takes) = N takes /V(courseid, takes) = 700/9 = 78 f = 512/8 = 64 B = 78/64 = 2 lap Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 12

Kiválasztás σ (1/2) Lineáris keresés olvassunk be minden lapot és keressük az egyezéseket (egyenlőség vizsgálata esetén) átlagos költség: nem kulcs B R, kulcs 0.5*B R Logaritmikus keresés rendezett mező esetén átlagos költség: m további oldalt kell beolvasni m = SC(A,R)/F R - 1 Elsődleges/cluster index átlagos költség: log 2 B R + m egyetlen rekord HT i + 1 több rekord HT i + SC(A,R)/F R Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 13

Kiválasztás σ (2/2) Másodlagos index átlagos költség: kulcs mező HT i + 1 nem kulcs mező legrosszabb eset HT i + SC(A,R) a lineáris keresés kedvezőbb, ha sok a megfelelő rekord Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 14

Összetett kiválasztás σ kif konjunkciós kiválasztás: végezzünk egyszerű kiválasztást a legkisebb költségű θ i -re pl. a θ i -hez tartozó index felhasználásával a fennmaradó θ feltételek szerint szűrjük az eredményt σ cid>00112233 courseid= 312 (takes) költség: az egyszerű kiválasztás költsége a kiválasztott θ-ra több index válasszuk ki a θ i -khez tartozó indexeket keressünk az indexekben és adjuk vissza a RID-ket válasz: RID-k metszete költség: a költségek összege + rekordok beolvasása diszjunkciós kiválasztás: több index RID-k uniója lineáris keresés σ θ1 θ 2... θ n σ θ1 θ 2... θ n Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 15

Vetítés és halmazműveletek SELECT DISTINCT cid FROM takes π-hez szükséges a duplikált értékek kiszűrése rendezés halmazműveletekhez ki kell szűrni a duplikált értékeket R S R S rendezés Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 16

Rendezés sok művelet hatékony kiértékelése a lekérdezés igényelheti: SELECT cid,name FROM student ORDER BY name megvalósítás belső rendezés (ha a rekordok beférnek a memóriába) külső rendezés Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 17

Külső összefésüléses rendezés (1/3) Rendező lépés: rendezett futamok létrehozása i=0; ismétlés M lap beolvasása az R relációból a memóriába az M lap rendezése kiírás az R i fájlba (futamba) i növelése amíg el nem fogynak a lapok N = i // futamok száma Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 18

Külső összefésüléses rendezés (2/3) Összevonási lépés: rendezett futamok összefésülése //feltéve, hogy N < M minden R i fájlhoz egy lap lefoglalása minden R i -ből egy-egy lap P i beolvasása // N lap lefoglalása ismétlés az N lap közül a (rendezés szerint) első rekord kiválasztása, legyen ez a P j lapon a rekord kiírása a kimenetre és törlése a P j lapról ha üres a lap, a következő P j ' beolvasása R j -ből amíg minden lap ki nem ürül Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 19

Külső összefésüléses rendezés (3/3) Összevonási lépés: rendezett futamok összefésülése Mi van, ha N > M? több menet minden menet M-1 futamot von össze, amíg nincs feldolgozva a reláció a következő menetben a futamok száma kisebb a végső menetben keletkezik a végső kimenet Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 20

Összefésüléses rendezés példa d 95 a 12 x 44 s 95 fájl f 12 o 73 t 45 n 67 e 87 z 11 v 22 b 38 d 95 a 12 x 44 memória R 1 R 2 R 3 R 4 1. menet a 12 d 95 x 44 ad 12 95 f 12 f 12 ad 12 95 o 73 s 95 e 87 n 67 t 45 b 38 v 22 z 11 futam a 12 a 12 d 95 b 38 f 12 d 95 o 73 e 87 s 95 f 12 x 44 2.menet n 67 o 73 b 38 s 95 e 87 t 45 n 67 v 22 t 45 x 44 v 22 z 11 z 11 Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 21

Összefésüléses rendezés költsége B R : R lapjainak száma Rendezési lépés: 2 * B R reláció olvasása/írása Összevonási lépés: kezdetben összevonandó futam minden menet M-1 futamot rendez tehát az összes menet száma: minden menetben 2 * B R lapot olvasunk reláció olvasása/írása kivéve az utolsó kiírást Teljes költség: B R M B R 2 * B R + 2 * B R * log M 1 - B R M log M 1 B R M Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 22

Vetítés π Α1,Α2 (R) felesleges mezők törlése átnézés és mezők eldobása duplikált rekordok törlése az eredmény rekordok rendezése az összes mező szerint a rendezett eredmény átnézése, duplikáltak (szomszédos) törlése költség kezdeti átnézés + rendezés + végső átnézés Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 23

Összekapcsolás π name (σ coursename=advanced DBs ((student cid takes) courseid course) ) megvalósítások skatulyázott ciklusos (nested loop) összekapcsolás blokk-skatulyázott ciklusos (block-nested loop) összekapcsolás indexelt skatulyázott ciklusos összekapcsolás összefésüléses rendező összekapcsolás hasításos összekapcsolás Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 24

Skatulyázott ciklusos összekapcsolás(1/2) R z S R minden t R rekordján S minden t S rekordján ha (t R egyezik t S Z-n) t R.t S kiírása vége vége Bármilyen összekapcsolási feltételnél működik S belső reláció R külső reláció Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 25

Skatulyázott ciklusos összekapcsolás(2/2) Költség: legjobb eset, ha a kisebb reláció elfér a memóriában ezt használjuk belső relációnak B R +B S legrosszabb eset, ha mindkét relációból csak 1-1 lap fér bele a memóriába S-t minden R-beli rekordnál végig kell olvasni N R * B s + B R Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 26

Blokk-skatulyázott ciklusos összekapcsolás (1/2) R minden X R lapján S minden X S lapján X R minden t R rekordján X S minden t S rekordján ha (t R t S egyezik Z-n) t R.t S kiírása vége vége vége vége Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 27

Költség: Blokk-skatulyázott ciklusos összekapcsolás (2/2) legjobb eset, ha a kisebb reláció elfér a memóriában ezt használjuk belső relációnak B R +B S legrosszabb eset, ha mindkét relációból csak 1-1 lap fér bele a memóriába S-t minden R-beli lapnál végig kell olvasni B R * B s + B R Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 28

R S Indexelt skatulyázott ciklusos összekapcsolás Index a belső reláción (S) a külső reláció (R) minden rekordjánál keresünk a belső reláció indexében Költség: B R + N R * c c a belső relációból index szerinti kiválasztás költsége a kevesebb rekordot tartalmazó reláció legyen a külső Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 29

R S Összefésüléses rendező összekapcsolás A relációk rendezettek az összekapcsolási mezők szerint Egyesítjük a rendezett relációkat mutatók az első rekordra mindkét relációban beolvasunk S-ből egy rekordcsoportot, ahol az összekapcsolási attribútum értéke megegyezik beolvasunk rekordokat R-ből és feldolgozzuk A rendezett relációkat csak egyszer kell végigolvasni Költség: d D e E x X e 67 e 87 n 11 rendezés költsége + B S + B R v V v 22 z 38 Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 30

Hasításos összekapcsolás R S alkalmazzuk h 1 -et az összekapcsolási mezőre és felosztjuk a rekordokat a memóriában elférő részekre R rekordjainak felosztása R 0 R n-1 S rekordjainak felosztása S 0 S n-1 az egymáshoz illő partíciók rekordjait összekapcsoljuk hasítófüggvény alapján indexelt blokk-skatulyázott ciklusos összekapcsolással Költség: 2*(B R +B S ) + (B R +B S ) R 0 S 0 R 1 S 1 R.. S.... R n-1 S n-1 Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 31

Feladat: összekapcsolás R S N R =2 15 B R = 100 N S =2 6 B S = 30 B + index S-en rend: 4 telített csúcsok skatulyázott ciklusos összekapcsolás: legjobb legrosszabb eset blokk-skatulyázott ciklusos összekapcsolás: legjobb legrosszabb eset indexelt skatulyázott ciklusos összekapcsolás Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 32

Kiértékelés több művelet kiértékelése egy tervben materializálás Csővezeték (pipeline) π name σ coursename=advanced DBs l courseid; indexskatulyázott ciklus cid; hasításos course összekapcsolás student takes Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 33

Materializálás létrehozunk ideiglenes relációkat ehhez írnunk kell a lemezre több lapírás π name σ coursename=advanced DBs l courseid; indexskatulyázott ciklus cid; hasításos course összekapcsolás student takes Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 34

Csővezeték (pipeline) (1/2) párhuzamos folyamatok egymásnak adják át az adatokat csökkenti az író/olvasó műveletek számát megvalósítások igénykövető adathúzás (pull) előállítás-követő adattolás (push) π name σ coursename=advanced DBs l courseid; indexskatulyázott ciklus cid; hasításos course összekapcsolás student takes Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 35

Csővezeték (2/2) mindig alkalmazható csővezeték? van-e algoritmus?? R S költsége materializálás és hasításos összekapcsolás: B R + 3(B R +B S ) csővezeték és index-skatulyázott ciklusos összekapcsolás: N R * HT i csővezetékkel R courseid materializálással S cid σ coursename=advanced DBs student takes course Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 36

Lekérdezés optimalizálása

Kiértékelési út kiválasztása költségalapú optimalizáció tervek számbavétele R S T, 12 lehetséges sorrend az egyes utak költségbecslése teljes költség nem lehet egymástól függetlenül optimalizálni a műveleteket Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 38

Költségbecslés művelet (σ, π, ) megvalósítás bemenet mérete kimenet mérete rendezés π name σ coursename=advanced DBs l courseid; indexskatulyázott ciklus cid; hasításos course összekapcsolás student takes Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 39

Méretbecslés (1/2) σ A= v (R) SC(A,R) σ A v (R) v min(a,r) N R * max(a,r) min(a,r) σ θ1 θ 2... θ n (R) szorzódó valószínűségek σ θ1 θ 2 v... θ n (R) annak valószínűsége, hogy egy rekordra egy θ se igaz: [(1 s 1 N R ) *(1 s 2 N R )*...*(1 s n N R )] N R *[(s 1 N R ) *(s 2 N R )*...(s n N R )] N R *(1 [(1 s 1 N R ) *(1 s 2 N R ) *...*(1 s n N R )]) Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 40

Méretbecslés (2/2) R x S N R * N S R S R S = : N R * N S R S kulcs R-en: a kimenet maximális mérete N S R S idegen kulcs R-hez: N S R S = {A}, sem R-nek, sem S-nek nem kulcsa N R *N S / V(A,S) N S *N R / V(A,R) Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 41

Kifejezés-ekvivalencia konjunkciós kiválasztás felbontása σ θ1 θ 2 (R) = σ θ1 (σ θ 2 (R)) kiválasztás kommutativitása σ θ1 (σ θ 2 (R)) = σ θ 2 (σ θ1 (R)) kiválasztás kombinálása szorzattal és összekapcsolással σ θ1 (R x S) = R θ1 S összekapcsolás kommutativitása R θ1 S = S θ1 R kiválasztás disztributivitása az összekapcsolásra nézve σ θ1^θ2 (R S) = σ θ1 (R) σ θ2 (S) vetítés disztributivitása az összekapcsolásra nézve π A1,A2 (R S) = π A1 (R) π A2 (S) összekapcsolás asszociativitása: R (S T) = (R S) T Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 42

Költségoptimalizáló (1/2) átalakítja a kifejezéseket egyenértékű kifejezések heurisztika, ökölszabályok korán végezzük el a kiválasztást korán végezzük el a vetítést a szorzatot követő kiválasztást σ (R x S) helyettesítsük összekapcsolással R S a legkisebb eredményt adó összekapcsolásokkal és kiválasztásokkal kezdjük készítsünk bal oldalon mély kiválasztási fákat Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 43

Költségoptimalizáló (2/2) π name σ coursename= Advanced DBs l π name student cid; hasításos összekapcsolás courseid; indexskatulyázott ciklus course takes student cid; hasításos összekapcsolás ccourseid; indexskatulyázott ciklus σ coursename= Advanced DBs takes course Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 44

Költségbecslési gyakorlat π name (σ coursename=advanced DBs ((student cid takes) courseid course) ) R = student cid takes S = course N S = 10 rekord feltesszük, hogy átlagosan 50 hallgató vesz fel egy kurzust blokkolási tényező: 2 rekord/lap mi a költsége: σ coursename=advanced DBs (R courseid S) mi a költsége: R σ coursename=advanced DBs S feltesszük, hogy a relációk beleférnek a memóriába Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 45

Összefoglalás Egyetlen művelet költségének becslése Egy lekérdezési terv költségének becslése Optimalizálás válasszuk a leghatékonyabb tervet Haladó adatbázisok Lekérdezések feldolgozása és optimalizálása 46