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

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

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

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

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

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

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ázisműveletek és lekérdezésoptimalizálás

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

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

Adatbázisok elmélete

Lekérdezések optimalizálása

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

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

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

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

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

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

Adatbázis Rendszerek

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

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

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

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

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

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

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

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

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

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.

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

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

Indexek és SQL hangolás

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

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

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

Adatbázisok elmélete

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

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

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

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

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

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

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

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

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

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

Relációs algebra 1.rész

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

Adatbázisok elmélete

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

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Sor és oszlopkalkulus

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

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

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

... 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.

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

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

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

Csima Judit szeptember 6.

Tankönyv példák kidolgozása

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

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

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

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

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

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

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

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

Algoritmuselmélet 2. előadás

Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Adatbázisrendszerek február 27.

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

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

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

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

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

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

Adatbázis, adatbázis-kezelő

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Algoritmuselmélet 1. előadás

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

Programozási segédlet

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

Genetikus algoritmusok

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

Adatbázis rendszerek Gy: Algoritmusok C-ben

Adatszerkezetek 7a. Dr. IványiPéter

INDEXSTRUKTÚRÁK III.

ADATBÁZIS RENDSZEREK. Attributum típusok, relációs algebra. Krausz Nikol, Medve András, Molnár Bence

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

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

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

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

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

Átírás:

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

TARTALOM Heurisztikus, szabály alapú optimalizálás Költség alapú optimalizálás Katalógus költségbecslés Operációk, műveletek áttekintése Kifejezéskiértékelés Az optimális végrehajtási terv kiválasztása Manuális vs. automatikus optimalizálás 2014. nov. 2

Á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 2014. nov. 3

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' 2014. nov. 4

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

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 2014. nov. 6

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 2014. nov. 7

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 2014. nov. 8

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 2014. nov. 9

Ö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 2014. nov. 10

MIKOR EKVIVALENS KÉT FA? RELÁCIÓS ALGEBRAI TRANSZFORMÁCIÓK I. σ c1 c 2 c n r σ c1 σ c2 σ cn r σ c1 σ c2 r σ c2 σ c1 r π List1 π List2 π Listn r π List1 r π A1,A 2,,A n σ c r σ c π A1,A 2,,A n r 2014. nov. 11

MIKOR EKVIVALENS KÉT FA? RELÁCIÓS ALGEBRAI TRANSZFORMÁCIÓK II. r c s s c r σ c r s σ c r s π L r c s π A1,,A n r c π B1,,B m s π L r c s π L π A1,,A n,a n+1,,a n+k r c π B1,,B m,b m+1,,b m+p s A halmazműveletek (unió, metszet) kommutativitása A join, Descartes-szorzat, unió és metszet asszociatív: rθs θt rθ sθt 2014. nov. 12

MIKOR EKVIVALENS KÉT FA? RELÁCIÓS ALGEBRAI TRANSZFORMÁCIÓK III. σ C r θ s σ C r θ σ C s π L r θ s π L r θ π L (s) Egyéb szabályok: c c 1 c 2 c 1 c 2 c c 1 c 2 c 1 c 2 2014. nov. 13

Ö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. 2014. nov. 14

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 2014. nov. 15

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 2014. nov. 16

A KATALÓGUSBAN TÁROLT EGYES RELÁCIÓKRA VONATKOZÓ INFORMÁCIÓK n r : az r relációban levő rekordok száma (number) b r : az r relációban levő rekordokat tartalmazó blokkok (blocks) száma s r : egy rekord nagysága (size) bájtokban f r : mennyi rekord fér egy blokkba (blocking factor) 2014. nov. 17

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: n r b r = f r 2014. nov. 18

KATALÓGUS INFORMÁCIÓK AZ INDEXEKRŐL f i : pointer kimenetek átlagos száma a fa struktúrájú indexeknél, pl. a B* fáknál HT i : az index szintjeinek száma (Height of Tree) HT i = log fi V A, r (B*-fa) HT i = 1 (hash) LB i : a levélszintű indexblokkok száma (Lowest level index Block) 2014. nov. 19

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. 2014. nov. 20

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 2014. nov. 21

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 2014. nov. 22

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 2014. nov. 23

Ö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 2014. nov. 24

Ö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 2014. nov. 25

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 2014. nov. 26

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 2014. nov. 27

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 2014. nov. 28

INDEXED NESTED-LOOP JOIN (INDEXALAPÚ EGYMÁSBA ÁGYAZOTT CIKLIKUS ILLESZTÉS) Az egyik relációhoz (s) van indexünk Tegyük az első algoritmus belső ciklusába az indexelt relációt A keresés index alapján kisebb költséggel is elvégezhető Költsége: ahol c a szelekció költsége s-en. b r + n r c, 2014. nov. 29

TOVÁBBI JOIN IMPLEMENTÁCIÓK sorted merge join a relációkat a join feltételben meghatározott attribútumok mentén rendezzük, majd összefésüljük hash join az egyik relációt hash-táblán keresztül érjük el, miközben a másik reláció egy adott rekordjához illeszkedő rekordokat keressük egyéb pl. bitmap indexekkel (bitmap join) 2014. nov. 30

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. 2014. nov. 31

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 2014. nov. 32

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 2014. nov. 33

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 2014. nov. 34

A KIÉRTÉKELÉSI TERV KIVÁLASZTÁSA milyen műveletek milyen sorrendben milyen algoritmus szerint pcustomer_name (rendezzük, hogy a másodpéldányokat kiejtsük) (hash join) milyen workflow-ban (merge join) depositor 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 2014. nov. 35

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 2014. nov. 36

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. 2014. nov. 37