Lekérdezések feldolgozása és optimalizálása. Haladó adatbázisokLekérdezések feldolgozása és optimalizálása2 Definíciók Lekérdezés feldolgozása –lekérdezés.

Slides:



Advertisements
Hasonló előadás
Boole Algebra Felhasználása
Advertisements

10. gyakorlat SQL SELECT.
Lekérdezések SQL-ben Relációs algebra A SELECT utasítás
© Kozsik Tamás Adatbáziskezelés •Relációs adatbáziskezelők •Noha a Java objektum-elvű, egyelőre nem az objektum-elvű adatbáziskezelőket támogatja.
Ismétlés Adatbázis alapfogalmak és Ms. Access
Adatbázis rendszerek I Relációs kalkulus Általános Informatikai Tsz. Dr. Kovács László.
Adatbázis rendszerek I
Anyagadatbank c. tárgy gyakorlat
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
Oracle tuning server.101/b10752/toc.htm.
Delphi programozás alapjai
Adatbázis kezelés. Hierarchikus modell Legrégebbi modell, ma már nem használatos. Az adatokat fákban tároljuk, ahol minden pont a szegmens adatokat, és.
Funkcionális programozás F#-ban
INSERT INTO Egy vagy több rekordot ad hozzá a táblához. Egyetlen rekordot hozzáfűző kifejezés: INSERT INTO cél_tábla (mező1,mező2,…) VALUES (érték1, érték2,
Adatbázis kezelés 1. előadás
SQL Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések
(MY)SQL MEGJEGYZÉSEK. MYISAM VS. INNODB  A MySQL-ben többféle tárolási motor is használatos: MyISAM, InnoDB  A régebbi verziókban a MyISAM alapértelmezett,
Adatbázis rendszerek II.
Adatbáziskezelés Horváth Ernő.
Adatbázis-kezelés ACCESS program:
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
SQL 1 SEQUEL, Structured English Query Language: SQL ANSI, ISO: SQL86, SQL89, SQL92. Alap (entry), közbenső (intermediate), teljes (full) szint. A DDL.
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1.5 Programozó matematikus szak 2003/2004-es tanév II. félév.
Adatbázis rendszerek I
SQL Server 2005 relációs adattárház technológiák
Adatbázisok elméleti alapjai
RDF és SPARQL. Felhasznált anyagok Marcelo Arenas, Claudio Gutierrez, Jorge Peréz: RDF and SPARQL: Database Foundations (bemutató) Claudio Gutierrez,
Lekérdezésfordító Adatbázisok 2.. Elemzés Lekérdezés Elemző Előfeldolgozó Logikai lekérdezéstervet generáló Lekérdezésátíró Jónak vélt logikai lekérdezésterv.
F28DM Query Optimization 1 F28DM adatbáziskezelő rendszerek Lekérdezések optimalizálása Monica Farrow Szoba: EMG30, Ext: 4160 Anyag.
Lekérdezésfordító Adatbázisok tervezése, megvalósítása, menedzselése.
Algebrai műveleti gráf optimalizálása ● Mennyi könyvet készített az idén legtöbbet kinyomtató Budapesti könyvkiadó? ● kiado(kod,nev,cim) ● konyv ( kiado,cim,ar,ev.
XML támogatás adatbázis-kezelő rendszerekben
Programozás C# -ban Ciklusok.
Relációs algebra. A relációs adatbáziskezelő nyelvek lekérdező utasításai a relációs algebra műveleteit valósítják meg. A relációs algebra a relációkon.
SQL. SQL = Structured Query Language (= struktúrált lekérdező nyelv). A relációs adatbázis-kezelés szabványos nyelve. Nem algoritmikus nyelv, de algoritmikus.
SQL.
Az SQL nyelv alapjai.
Adatkezelés Ez az előadó neve beosztása vállalata.
Lekérdezések Páll Boglárka A lekérdezés az adatbázisban szereplő adatok kinyerésének leghatékonyabb és legsokrétübb módja A lekérdezés tulajdonképpen.
1 Tudásalapú információ-kereső rendszerek elemzése és kifejlesztése Célkitűzés: Információk téma-specifikus, különböző típusú forrásokból (internet, intranet.
Készítette: Tóth Ervin
Az SQL nyelv. SQL Az SQL utasításait két fő csoportba szokták sorolni: DDL (= Data Definition Language): adatstuktúra definiáló utasítások. DML (= Data.
Adatbázis rendszerek I Relációs adatmodell strukturális része Általános Informatikai Tsz. Dr. Kovács László.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
SQL SELECT parancsok Kottyán László. A bemutató mintatáblái.
1 Informatikai Szakképzési Portál Adatbázis kezelés DQL – Adatlekérdező nyelv.
Adatbázisok gyakorlat
Többtáblás lekérdezések, hierarchikus lekérdezések, allekérdezések
Webprogramozó tanfolyam
Lekérdezések feldolgozása, kifejezésfák
Relációs algebra Relációs sémák tervezése
Adatbázis-kezelés. Középszint: –1-2 tábla –SQL-nyelv és lekérdező-rács használata –Űrlap és jelentés készítés Emelt szint: –több tábla (kapcsolatok) –több.
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
1 Például, hogyan, milyen procedúrával értékeljük ki az alábbi SQL (deklaratív) lekérdezést? Legyen adott R(A,B,C) és S(C,D,E). Melyek azok az R.B és S.D.
1 Relációs kalkulusok Tartománykalkulus (DRC) Sorkalkulus (TRC) - deklaratív lekérdezőnyelvek - elsőrendű logikát használnak - relációs algebra kifejezhető.
Automatikus fizikai tervezési javaslatok XML adatbázisokhoz Balogh Bernadett Kresz Marcell Cseh Tamás.
Gráfadatbázisok Rácz Gábor.
1 Adatbázisok elméleti alapjai Dr. Kiss Attila people.inf.elte.hu/kiss D
Programozás III JPA.
Ami még kimaradt. Halmazműveletek A lekérdezések eredmény sorainak halmazát tekintve több lekérdezés között értelmezhetjük a szokásos halmaz műveleteket.
SQL bevezetés Select-From-Where záradékok
Adatbázisok 1. SQL (alkérdések). Az IN használata Emlékezzünk vissza: Az IN után szereplő multihalmaz elemei lekérdezéssel is megadhatók SELECT nev FROM.
Programok készítése és futtatása. Integrált fejlesztői környezet (IDE) tartalmaz:  szövegszerkesztőt a program forráskódjának szerkesztésére,  fordítóprogramot.
Adatbázisok elméleti alapjai
Compiler illetve interpreter nyelvek
Relációs algebra lekérdezések optimalizációja
Adatbázisok használata
Előadás 03 Algebrai optimalizáció Mi a NULL? Multihalmazok
Relációs algebra lekérdezések optimalizációja
Előadás másolata:

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

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása2 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ázisokLekérdezések feldolgozása és optimalizálása3 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 cidname Paul Rob Matt takes cidcourseid course courseidcoursename 312Advanced DBs 395Machine Learning

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

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása5 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ázisokLekérdezések feldolgozása és optimalizálása6 Relációs algebra (2/2) SELECT * FROM student WHERE name=Paul –σ name=Paul (student) π name ( σ cid< (student) ) π name (σ coursename=Advanced DBs ((student ⋈ cid takes) ⋈ courseid course) ) student cidname Paul Rob Matt takes cidcourseid course courseidcoursename 312Advanced DBs 395Machine Learning

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása7 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ázisokLekérdezések feldolgozása és optimalizálása8 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 student σ name=Paul student σ coursename=Advanced DBs l studenttakes cid; hasításos összekapcsolás courseid; index- skatulyázott ciklus course π name

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása9 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

Műveletek és költségek

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása11 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ázisokLekérdezések feldolgozása és optimalizálása12 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ázisokLekérdezések feldolgozása és optimalizálása13 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: egyetlen rekord HT i + 1 több rekord HT i + ⌈ SC(A,R)/F R ⌉

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása14 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ázisokLekérdezések feldolgozása és optimalizálása15 Ö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 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

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása16 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ázisokLekérdezések feldolgozása és optimalizálása17 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ázisokLekérdezések feldolgozása és optimalizálása18 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ázisokLekérdezések feldolgozása és optimalizálása19 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// N lap lefoglalása minden R i -ből egy-egy lap P i beolvasá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ázisokLekérdezések feldolgozása és optimalizálása20 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ázisokLekérdezések feldolgozása és optimalizálása21 Összefésüléses rendezés példa d95 a12 x44 s95 f12 o73 t45 n67 e87 z11 v22 b38 fájl memória t45 n67 e87 z11 v22 b38d95a12x44a12d95x44 R1R1 f12 o73 s95 R2R2 e87 n67 t45 R3R3 b38 v22 z11 R4R4 a12f a d95d a12d95 x44 s95 f12 o73 futam 1. menet 2.menet v22 t45 s95 z11 x44 o73 a12 b38 n67 f12 d95 e87

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása22 Ö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: –2 * B R + 2 * B R * - B R

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása23 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ázisokLekérdezések feldolgozása és optimalizálása24 Ö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ázisokLekérdezések feldolgozása és optimalizálása25 Skatulyázott ciklusos összekapcsolás(1/2) R ⋈ S R minden t R rekordján S minden t S rekordján ha (t R t S egyezik) t R.t S kiírása vége Bármilyen összekapcsolási feltételnél működik S belső reláció R külső reláció

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása26 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ázisokLekérdezések feldolgozása és optimalizálása27 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) t R.t S kiírása vége

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása28 Blokk-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 lapnál végig kell olvasni B R * B s + B R

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása29 Indexelt skatulyázott ciklusos összekapcsolás R ⋈ 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ázisokLekérdezések feldolgozása és optimalizálása30 Összefésüléses rendező összekapcsolás R ⋈ 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: –rendezés költsége + B S + B R dD eE xX vV e67 e87 n11 v22 z38

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása31 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 R0R0 R1R1 R n S S0S0 S1S1 S n

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása32 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ázisokLekérdezések feldolgozása és optimalizálása33 Kiértékelés több művelet kiértékelése egy tervben materializálás Csővezeték (pipeline) σ coursename=Advanced DBs l studenttakes cid; hasításos összekapcsolás courseid; index- skatulyázott ciklus course π name

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása34 Materializálás létrehozunk ideiglenes relációkat ehhez írnunk kell a lemezre –több lapírás σ coursename=Advanced DBs l studenttakes cid; hasításos összekapcsolás courseid; index- skatulyázott ciklus course π name

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása35 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) σ coursename=Advanced DBs l studenttakes cid; hasításos összekapcsolás courseid; index- skatulyázott ciklus course π name

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása36 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 σ coursename=Advanced DBs studenttakes cid courseid course csővezetékkel materializálással R S

Lekérdezés optimalizálása

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása38 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ázisokLekérdezések feldolgozása és optimalizálása39 Költségbecslés művelet (σ, π, ⋈ …) megvalósítás bemenet mérete kimenet mérete rendezés σ coursename=Advanced DBs l studenttakes cid; hasításos összekapcsolás courseid; index- skatulyázott ciklus course π name

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása40 Méretbecslés (1/2) –SC(A,R) – –szorzódó valószínűségek – –annak valószínűsége, hogy egy rekordra egy θ se igaz: –

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása41 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ázisokLekérdezések feldolgozása és optimalizálása42 Kifejezés-ekvivalencia konjunkciós kiválasztás felbontása – kiválasztás kommutativitása – 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ázisokLekérdezések feldolgozása és optimalizálása43 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ázisokLekérdezések feldolgozása és optimalizálása44 Költségoptimalizáló (2/2) σ coursenam = Advanced DBs studenttakes cid; hasításos összekapcsolás ccourseid; index- skatulyázott ciklus course π name σ coursename=Advanced DBs l studenttakes cid; hasításos összekapcsolás courseid; index- skatulyázott ciklus course π name

Haladó adatbázisokLekérdezések feldolgozása és optimalizálása45 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ázisokLekérdezések feldolgozása és optimalizálása46 Ö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