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

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

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

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

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

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

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

Lekérdezés-feldolgozás és optimalizálás

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

Adatbázisok elmélete

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

Lekérdezések optimalizálása

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

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

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

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

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

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

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Információ menedzsment eladások I. rész: Döntéstámogatás. Gajdos Sándor, TMIT sz

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

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

Adatbázis Rendszerek

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

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

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

Indexek és SQL hangolás

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

Adatbázisok elmélete

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

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

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

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

Feladatok A mai előadáson: Tankönyv -- Termékek feladatai:

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.

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.

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

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

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

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

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

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

Adaptív dinamikus szegmentálás idősorok indexeléséhez

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

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

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

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

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

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

4.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

19. Hasításos technikák (hash-elés)

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

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

Adatbázis rendszerek Ea: Viszonyított betűszámtan. Relációs algebra alapok

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

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Algoritmuselmélet 1. előadás

Adatbázisok elmélete

Sor és oszlopkalkulus

Adatbázis rendszerek Ea: Viszonyított betűszámtan. Relációs algebra alapok

Adatbázis, adatbázis-kezelő

Algoritmuselmélet 2. előadás

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

Adatbázisrendszerek február 27.

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

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

Számítógépes döntéstámogatás. Genetikus algoritmusok

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Tankönyv példák kidolgozása

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

SELECT DISTINCT deptno FROM emp; (distinct) SELECT STATEMENT HASH UNIQUE TABLE ACCESS FULL EMP

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

Informatikai alapismeretek Földtudományi BSC számára

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

TSIMMIS egy lekérdezés centrikus megközelítés. TSIMMIS célok, technikák, megoldások TSIMMIS korlátai További lehetségek

3.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Redukciós műveletek. Projekció (vetítés): oszlopok kiválasztása. Jelölés: attribútumlista (tábla) Példa: Könyv

Genetikus algoritmusok

Adatszerkezetek 1. előadás

Adatbázis kezelés Delphiben. SQL lekérdezések

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

Lekérdezések az SQL SELECT utasítással

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

Algoritmuselmélet 1. előadás

Relációs algebrai lekérdezések átírása SQL SELECT-re (példák)

Adatbázis rendszerek Gy: Algoritmusok C-ben

2. Visszalépéses keresés

Indexek és Teljesítményoptimalizálás

7. előadás. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF. Adatbázisrendszerek előadás november 3.

Adatszerkezetek és algoritmusok

Gyakori elemhalmazok kinyerése

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

Programozás alapjai II. (7. ea) C++

Csima Judit szeptember 6.

SQLServer. Particionálás

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

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

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

Átírás:

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

ÁTTEKINTÉS lekérdezés (query) értelmező és fordító reláció algebrai kifejezés optimalizáló lekérdezés kimenet kiértékelő motor végrehajtási terv adatok statisztika az adatokról

I. HEURISZTIKUS, SZABÁLY ALAPÚ OPTIMALIZÁLÁS Relációs algebrai fa alapú optimalizálás Lekérdezési fa EMPLOYEE (EMPLOYEE_ID, LAST_NAME, FIRST_NAME, BIRTH_DATE, ) PROJECT (PROJECT_ID, PNAME, ) WORKS_ON (PROJECT_ID, EMPLOYEE_ID) select last_name from employee, works_on, project where employee.birth_date > '1957.12.31' and works_on.project_id = project.project_id and works_on.employee_id = employee.employee_id and project.pname = 'Aquarius'

EGY LEHETSÉGES RELÁCIÓS ALGEBRAI MEGFELELŐ π LAST_NAME ൬ σ BIRTH_DATE>"1957.12.31" EMPLOYEE EMPLOYEE_ID=EMPLOYEE.EMPLOYEE_ID PROJECT_ ID=PROJECT.PROJECT_ID σ PNAME="Aquarius" PROJECT ቁ WORKS_ON π LAST_NAME PROJECT_ ID=PROJECT.PROJECT_ID EMPLOYEE_ID=EMPLOYEE.EMPLOYEE_ID σ PNAME="Aquarius" σ BIRTH_DATE>"1957.12.31" WORKS_ON PROJECT EMPLOYEE

KIFEJEZÉSKIÉRTÉKELÉS MÓDJAI Materializáció összetett kifejezésnek egyszerre egy műveletét értékeljük ki valamilyen rögzített sorrend szerint Pipelining egyszerre több elemi művelet szimultán kiértékelése folyik egy operáció eredményét azonnal megkapja a sorban következő operáció operandusként

I. HEURISZTIKUS, SZABÁLY ALAPÚ OPTIMALIZÁLÁS Relációs algebrai fa alapú optimalizálás Lekérdezési fa EMPLOYEE (EMPLOYEE_ID, LAST_NAME, FIRST_NAME, BIRTH_DATE, ) PROJECT (PROJECT_ID, PNAME, ) WORKS_ON (PROJECT_ID, EMPLOYEE_ID) select last_name from employee, works_on, project where employee.birth_date > '1957.12.31' and works_on.project_id = project.project_id and works_on.employee_id = employee.employee_id and project.pname = 'Aquarius'

EGY LEHETSÉGES RELÁCIÓS ALGEBRAI MEGFELELŐ π LAST_NAME ൬ σ BIRTH_DATE>"1957.12.31" EMPLOYEE EMPLOYEE_ID=EMPLOYEE.EMPLOYEE_ID PROJECT_ ID=PROJECT.PROJECT_ID σ PNAME="Aquarius" PROJECT ቁ WORKS_ON π LAST_NAME PROJECT_ ID=PROJECT.PROJECT_ID EMPLOYEE_ID=EMPLOYEE.EMPLOYEE_ID σ PNAME="Aquarius" σ BIRTH_DATE>"1957.12.31" WORKS_ON PROJECT EMPLOYEE

CÉL: A LEGGYORSABB ALAK KIVÁLASZTÁSA Kiindulás: kanonikus alakból (Descartes, szűrés, projekció) π LAST_NAME σ PNAME = "Aquarius" PROJECT_ID = PROJECT.PROJECT_ID EMPLOYEE_ID = EMPLOYEE.EMPLOYEE_ID BIRTH_DATE > "1957.12.31" PROJECT EMPLOYEE WORKS_ON

MÁSODIK LÉPÉS: SZELEKCIÓK SÜLLYESZTÉSE π LAST_NAME σ PROJECT_ ID=PROJECT.PROJECT_ID σ EMPLOYEE_ID=EMPLOYEE.EMPLOYEE_ID σ PNAME="Aquarius" PROJECT σ BIRTH_DATE>"1957.12.31" WORKS_ON EMPLOYEE

HARMADIK LÉPÉS: LEVELEK ÁTRENDEZÉSE π LAST_NAME σ EMPLOYEE_ID=EMPLOYEE.EMPLOYEE_ID σ PROJECT_ ID=PROJECT.PROJECT_ID σ BIRTH_DATE>"1957.12.31" EMPLOYEE σ PNAME="Aquarius" WORKS_ON PROJECT

NEGYEDIK LÉPÉS: JOIN π LAST_NAME EMPLOYEE_ID=EMPLOYEE.EMPLOYEE_ID PROJECT_ ID=PROJECT.PROJECT_ID σ BIRTH_DATE>"1957.12.31" σ PNAME="Aquarius" WORKS_ON EMPLOYEE PROJECT

ÖTÖDIK LÉPÉS: PROJEKCIÓ SÜLLYESZTÉSE π LAST_NAME EMPLOYEE_ID=EMPLOYEE.EMPLOYEE_ID π EMPLOYEE_ID π EMPLOYEE_ID, LAST_NAME PROJECT_ ID=PROJECT.PROJECT_ID σ BIRTH_DATE>"1957.12.31" π PROJECT_ID π PROJECT_ID, EMPLOYEE_ID EMPLOYEE σ PNAME="Aquarius" WORKS_ON PROJECT

ÖSSZEFOGLALÓ SZABÁLYOK Konjunktív szelekciós feltételeket szelekciós feltételek sorozatává bontjuk. Szelekciós műveleteket felcseréljük a többi művelettel. Átrendezzük a lekérdezési fa leveleit. A Descartes szorzatokat és a fölöttük lévő szelekciós kapcsolási feltételt egy join műveletté vonjuk össze. A projekciós műveleteket felcseréljük a többi művelettel.

II. KÖLTSÉG ALAPÚ OPTIMALIZÁLÁS 1. Elemzés (szintaktikus), fordítás 2. Költségoptimalizálás 3. Kiértékelés

KÖLTSÉG MEGHATÁROZÁSA Meghatározása: igényelt és felhasznált erőforrások alapján? válaszidő alapján? kommunikációra fordított idő alapján? Definíció: háttértár blokkolvasások és írások száma a válasz kiírásának költsége nélkül További egyszerűsítések.

II. KÖLTSÉG ALAPÚ OPTIMALIZÁLÁS Katalógusadatok alapján történő költségbecslés A katalógusban tárolt egyes relációkra vonatkozó információk Katalógusinformációk az indexekről A lekérdezés költsége Megoldás az adatok frissítésére

A KATALÓGUSBAN TÁROLT EGYES RELÁCIÓKRA VONATKOZÓ INFORMÁCIÓK V A, r : hány különböző értéke (Values) fordul elő az A attribútumnak az r relációban (kardinalitás). V A, r = π A (r) Ha A kulcs, akkor V A, r = n r SC A, r : (Selection Cardinality) azon rekordok átlagos száma, amelyek egy kiválasztási feltételt kielégítenek. Ha A kulcs, akkor SC A, r = 1 Általános esetben SC A, r = n r V A,r Ha a relációk rekordjai fizikailag együtt vannak tárolva, akkor: b r = n r f r

OPERÁCIÓK, MŰVELETEK KÖLTSÉGE Select szelekciós algoritmusok (alap, indexelt, összehasonlításos) komplex szelekció Join típusai join nagyságbecslés join algoritmusok komplex join Egyéb ismétlődés kiszűrése unió, metszet, különbség

ALAP SZELEKCIÓS ALGORITMUSOK (=) A1: Lineáris keresés Költsége: A2: Bináris keresés Feltétele: Blokkok folyamatosan a diszken E A1 = b r Az A attribútum szerint rendezettek Szelekció feltétele az egyenlőség az A attribútumon Költsége: E A2 = log 2 b r + 1 + SC(A, r) f r 1

INDEXELT SZELEKCIÓS ALGORITMUSOK A3: Elsődleges index használatával, egyenlőségi feltételt a kulcson vizsgálva E A3 = HT i + 1 A4: Elsődleges index használatával, egyenlőségi feltétel nem kulcson (a nemkulcs attribútumon van az elsődleges index) E A4 = HT i + SC A,r f r A5: Másodlagos index használatával. E A5 = HT i + SC A, r E A5 = HT i + 1, ha A kulcs

ÖSSZEHASONLÍTÁS ALAPÚ SZELEKCIÓ A v (R) Az eredményrekordok számának becslése: Ha v t nem ismerjük: n r 2 Ha v t ismerjük, egyenletes eloszlás esetén: n átlagos = n r v min A, r max A, r min A, r

ÖSSZEHASONLÍTÁS ALAPÚ SZELEKCIÓ A v (R) A6: Elsődleges index használatával. Ha v t nem ismerjük: Ha v t ismerjük: E A6 = HT i + b r 2 E A6 = HT i + c f r, ahol c jelöli azon rekordok számát, ahol A v A7: Másodlagos index használatával E A7 = HT i + LB i 2 + n r 2

JOIN OPERÁCIÓ Definíció: r 1 θ r 2 = σ θ r 1 r 2 Típusai: Természetes illesztés (natural join) r 1 r 2 = π A B σ R1.X=R2.X r 1 r 2 Külső illesztés (outer join) Bal oldali külső illesztés: r 1 + r 2 Jobb oldali külső illesztés: r 1 + r 2 Teljes külső illesztés: r 1 + + r 2 Theta illesztés: r 1 θ r 2 = σ θ r 1 r 2

NESTED LOOP JOIN (EGYMÁSBA ÁGYAZOTT CIKLIKUS ILLESZTÉS) Adott két reláció, r és s: FOR minden t r r rekordra DO BEGIN FOR minden t s s rekordra DO BEGIN teszteljük t r, t s párt, hogy kielégíti e a θ join feltételt IF igen, THEN adjuk a t r. t s rekordot az eredményhez END END worst case költség: n r b s + b r ha legalább az egyik befér a memóriába, akkor a költség: b r + b s

BLOCK NESTED LOOP JOIN (BLOKKALAPÚ EGYMÁSBA ÁGYAZOTT CIKLIKUS ILLESZTÉS) FOR minden b r r blokkra DO BEGIN FOR minden b s s blokkra DO BEGIN FOR minden t r b r rekordra DO BEGIN FOR minden t s b s rekordra DO BEGIN teszteljük le a t r, t s párt END END END END worst case költsége: b r b s +b r sok memóriával: b r + b s

EGYÉB OPERÁCIÓK Ismétlődés kiszűrése (rendezés, majd törlés) Projekció (projekció, majd ismétlődés kiszűrés) Unió (mindkét relációt rendezzük, majd összefésülésnél kiszűrjük a duplikációkat) Metszet (mindkét relációt rendezzük, fésülésnél csak a másodpéldányokat hagyjuk meg) Különbség (mindkét relációt rendezzük, fésülésnél csak első relációbeli rekordokat hagyunk) Aggregáció pl. márkanév G sum(egyenleg) (számla) számítása,pl. rendezéssel márkanévre. Összegzés on the fly.

KIFEJEZÉSKIÉRTÉKELÉS MÓDJAI Materializáció összetett kifejezésnek egyszerre egy műveletét értékeljük ki valamilyen rögzített sorrend szerint Pipelining egyszerre több elemi művelet szimultán kiértékelése folyik egy operáció eredményét azonnal megkapja a sorban következő operáció operandusként

MATERIALIZÁCIÓ Kanonikus alak: π customer_name σ balance<2500 account customer Műveleti fa: pcustomer_name balance < 2500 customer account Eredő költség: a végrehajtott műveletek költsége + részeredmények tárolásának költsége Előnye: egyszerű implementálhatóság Hátrány: sok háttértár művelet

PIPELINING szimultán kiértékelés a részegységek az előttük álló elemtől kapott eredményekből a sorban következő számára állítanak elő részeredményeket nem számítja ki előre az egész relációt Előnye: kiküszöböli az ideiglenes tárolás szükségességét kis memóriaigény Hátránya: szűkíti a felhasználható algoritmusok körét

A KIÉRTÉKELÉSI TERV KIVÁLASZTÁSA milyen műveletek milyen sorrendben milyen algoritmus szerint milyen workflow ban (merge join) pcustomer_name (rendezzük, hogy a másodpéldányokat depositor kiejtsük) (hash join) csővezeték csővezeték egy konkrét kiértékelési terv branch_city= Brooklyn (használjuk az 1. indexet) branch balance < 1000 (használjunk lineáris olvasást) account

KÖLTSÉGALAPÚ OPTIMALIZÁCIÓ Mohó és egyben rossz stratégia: Minden ekvivalens kifejezés felsorolása Minden forma kiértékelése Az optimális kiválasztása Pl.: Tekintsük az alábbi kifejezést: r 1 r 2 r 3 12 ekvivalens Általános esetben: n reláció illesztésére 2(n 1)! n 1! Ez túl nagy terhelés lenne a rendszer számára. ekvivalens lehetőség. A megoldás: heurisztikus költség alapú optimalizálás

AUTOMATIKUS VS. MANUÁLIS OPTIMALIZÁLÁS Az automatikus optimalizáló előnyei: Szélesebb ismeret a letárolt adatértékekről. Gyorsabb numerikus kiértékelési mechanizmus. Szisztematikus értékelés. Algoritmusa több szakember együttes tudását hordozza. Dinamikusan, minden művelet előtt, az aktuális feltételeket figyelembe véve értékelődik ki. Az emberi optimalizálás előnyei: Szélesebb általános ismeret, a probléma szemantikai tartalmának felhasználása lehetséges. Nagyobb szabadság a felhasználható módszerek, eszközök tekintetében. Váratlan helyzetekre jobban felkészült.