Gagnasafnsfræði Venslaalgebra og bestun fyrirspurna. Hallgrímur H. Gunnarsson

Σχετικά έγγραφα
Meðalmánaðardagsumferð 2009

Reikniverkefni VII. Sævar Öfjörð Magnússon. 22. nóvember Merki og ker Jónína Lilja Pálsdóttir

Þriggja fasa útreikningar.

Viðskipta- og Hagfræðideild Tölfræði II, fyrirlestur 6

x(t) = T 0 er minnsta mögulega gildi á T

Bústólpi ehf - Nýtt kjarnfóður H K / APRÍL 2014

Ályktanir um hlutföll og tengslatöflur

Kaplan Meier og Cox. Aðferðafræði klínískra rannsókna haustið 2010 Fimmtudagur 11 nóvember. Thor Aspelund Hjartavernd og Háskóla Íslands

Líkindi Skilgreining

PRÓFBÚÐIR Í LÍNULEGRI ALGEBRU VIÐ HR VOR 2014 HERKÚLES

Undirstöðuatriði RC-tengds magnara Ólafur Davíð Bjarnason og Valdemar Örn Erlingsson 28. apríl 2009

Forritunarkeppni Framhaldsskólanna 2014

Eðlisfræði 1. Dæmi 5.2 (frh.) Dæmi Dæmi (frh.) d) P = W tog. = 0, 47kW. = 9, 4kJ

FRÆÐSLUSKRIFSTOFA RAFIÐNAÐARINS

Guðbjörg Pálsdóttir Guðný Helga Gunnarsdóttir NÁMSGAGNASTOFNUN

4.01 Maður ekur 700 km. Meðalhraðinn er 60 km/klst fyrstu 250 km og 75 km/klst síðustu 450 km. Hver er meðalhraðinn?

6. júní 2016 kl. 08:30-11:00

Sæmundur E. Þorsteinsson, TF3UA

Menntaskólinn í Reykjavík

Vísandi mælitæki (2) Vísandi mælitæki. Vísandi mælitæki (1) Vísandi mælitæki (3)

RAF301G Merki og kerfi Miðmisserispróf, lausn

Tölfræði II Samantekt vor 2010

H2S loftgæðamælingar í Norðlingaholti og í Hveragerði

Span og orka í einfaldri segulrás

Stær fræ i. Kennsluleiðbeiningar. Kennsluleiðbeiningar. 8tíu. NÁMSGAGNASTOFNUN 15. febrúar 2007

H 2 S loftgæðamælingar við Hellisheiðarvirkjun og við Nesjavallavirkjun

H 2 S loftgæðamælingar við Hellisheiðarvirkjun og við Nesjavallavirkjun

Eðlisfræði II: Riðstraumur. Kafli 11. Jón Tómas Guðmundsson 10. vika vor 2016

H 2 S loftgæðamælingar í Norðlingaholti og í Hveragerði

H 2 S loftgæðamælingar við Hellisheiðarvirkjun og Nesjavallavirkjun

Um tölvur stýrikerfi og forritun

t 2 c2 2 Φ = 0. (2.1)

Hæðarkerfi og hæðir Þórarinn Sigurðsson Landmælingar Íslands

FYLGISEÐILL FYRIR. PHENOLEPTIL 100 mg töflur fyrir hunda

Borðaskipan í þéttefni

fyrirlestrapunktar vor 2009 Háskóli Íslands Mælingar tengdar í tíma. Kafli 7 (muna 5.5. og k. 1-4)

Nokkur valin atriði úr aflfræði

1) Birgðabreyting = Innkaup - Sala + Framleiðsla - Rýrnun - Eigin notkun. Almennari útgáfa af lögmálinu hér fyrir ofan lítur svona út:

Aðskilnaður breytistærða í rúmi

Fylgiseðill: Upplýsingar fyrir notanda lyfsins

Fylgiseðill: Upplýsingar fyrir notanda lyfsins. Symbicort mite Turbuhaler 80 míkrógrömm/4,5 míkrógrömm/skammt, Innöndunarduft

Kafli 4 Línulegur kraftur og hreyfing

Vinkill. Lausnir. Ítarefni í stærðfræði fyrir 10. bekk

H2S loftgæðamælingar í Norðlingaholti og í Hveragerði

Samgöngustofa. Skoðunarhandbók ökutækja Skjal: Formáli Útgáfunúmer: 20 Almenn atriði Dags.:

Veghönnunarreglur 03 Vegferill

H2S mælingar í Norðlingaholti og Hveragerði Skýrsla um mælingar árið 2013 Unnið fyrir Orkuveitu Reykjavíkur

Fylgiseðill: Upplýsingar fyrir notanda lyfsins. Daivobet 50 míkrógrömm/0,5 mg/g smyrsli. kalsípótríól/betametasón

Veghönnunarreglur 02 Þversnið

9 x 2 x 2 x 3 = 19 (9 + 2) 2 3 = 19

Hagrannsóknir II fyrirlestraglósur

S t æ r ð f r æ ð i. Kennsluleiðbeiningar. Kennsluleiðbeiningar. 8tíu NÁMSGAGNASTOFNUN. 7. september 2006

Verkefni 1: Splæsibrúun og jafnhæðarferlar

SKALI STÆRÐFRÆÐI FYRIR UNGLINGASTIG KENNARABÓK. Grete Normann Tofteberg Janneke Tangen Ingvill Merete Stedøy-Johansen Bjørnar Alseth

CHEMISTRY. Bylgjueðli ljóss. Bylgjueðli ljóss. Rafeindabygging atóma. Bylgjueðli ljóss. Bylgjueðli ljóss. Bylgjueðli ljóss

SAMANTEKT Á EIGINLEIKUM LYFS

H 2 S loftgæðamælingar við Hellisheiðarvirkjun og við Nesjavallavirkjun

Niðurstöður aurburðarmælinga í Jökulsá í Fljótsdal árið 2003

FYLGISEÐILL. Dorbene Vet 1 mg/ml stungulyf, lausn fyrir hunda og ketti.

Stillingar loftræsikerfa

FASTEIGNAMAT 2017 OKTÓBER 2016

REGLUGERÐ FRAMKVÆMDASTJÓRNARINNAR (ESB) nr. 1228/2014. frá 17. nóvember 2014

SAMANTEKT Á EIGINLEIKUM LYFS. Hver tafla inniheldur 2,0 mg af cýpróterónacetati og 35 míkrógrömm af etinýlestradíóli.

SAMANTEKT Á EIGINLEIKUM LYFS. Hver tafla inniheldur 2,0 mg af cýpróterónacetati og 35 míkrógrömm af etinýlestradíóli.

BLDC mótorstýring. Lokaverkefni í rafmagnstæknifræði BSc. Halldór Guðni Sigvaldason

16 kafli stjórn efnaskipta

SAMANTEKT Á EIGINLEIKUM LYFS

Fylgiseðill: Upplýsingar fyrir notanda lyfsins. Fluarix stungulyf, dreifa í áfylltri sprautu Inflúensubóluefni (veiruhlutar, deyddir)

Iðjuþjálfun LIE0103 Hrefna Óskarsd.

HÖNNUN BURÐARVIRKIS IÐNAÐARHÚSS SAMANBURÐUR Á MISMUNANDI BYGGINGAREFNUM

Vinkill 3. Ítarefni í stærðfræði fyrir 10. bekk

SAMANTEKT Á EIGINLEIKUM LYFS. Hver húðuð tafla inniheldur 2 mg af cyproteronacetati og 0,035 mg (35 míkrógrömm) af etinylestradioli sem virk efni.

SAMANTEKT Á EIGINLEIKUM LYFS

HÖNNUN Á STRENGLÖGN 11KV ÞINGVALLASVEIT

Fagið 02/08 SÝKINGAR TENGDAR HEILBRIGÐIS ÞJÓNUSTU OG SMITLEIÐIR. Ásdís Elfarsdóttir Jelle, MPH, deildarstjóri sýkingavarnadeildar Landspítala

SAMANTEKT Á EIGINLEIKUM LYFS. Hver tafla inniheldur 23,75 mg, 47,5 mg, 95 mg eða 190 mg af metoprololsuccinati.

Námskeið fyrir hita- og vatnsveitur Dælur og stýringar

Um flokkun sorps og spilliefna gilda ýmsar innlendar og alþjóðlegar reglur sem Háskóli Íslands hlítir. Í sérhverri bygg-

Kafli 1: Tímastuðull RC liður. Dæmi 1.1 A: 3,3ms B: 7,56V Dæmi 1.2 A: 425µF B: 1s Dæmi 1.3 A: 34,38V B: 48,1V Dæmi 1.4 A: 59,38s

Leiðbeinandi tilmæli

VIÐAUKI I SAMANTEKT Á EIGINLEIKUM LYFS

Fylgiseðill: Upplýsingar fyrir notanda lyfsins. Daivobet 50 míkrógrömm/0,5 mg/g hlaup. kalsípótríól/betametasón

VIÐAUKI I SAMANTEKT Á EIGINLEIKUM LYFS

CHEMISTRY. Eðli orkunnar. Kafli 5 Varmaefnafræði. Hiti-varmi. MR efnafræði í 4. bekk. The Central Science 9th Edition. David P.

Reglur um skoðun neysluveitna

Skýrsla nefndar um stefnumótun í íþróttum stúlkna og kvenna. í samræmi við þingsályktun sem samþykkt var á Alþingi 4. júní 1996

Landskeppni í eðlisfræði 2014

SAMANTEKT Á EIGINLEIKUM LYFS

Tilraunir í efnafræði Lokaverkefni í 10.bekk Réttarholtsskóla vorið 2011

Lauf_P :26 Page 1 Laufblaðið Gefið út af Landssamtökum áhugafólks um flogaveiki 2. tölublað 9. árg. 2001

Rafbók. Riðstraumsmótorar. Kennslubók

Skýrsla LV nr: LV Dags: desember Titill: Landbrot á bökkum Hálslóns í Kringilsárrana úttekt 2017

1 Aðdragandi skammtafræðinnar

11979 H: Lögum um aðildarskilmála og aðlögun að sáttmálunum aðild Lýðveldisins Grikklands (Stjtíð. EB L 291, , bls. 17),

EES-viðbætir við Stjórnartíðindi Evrópusambandsins. FRAMSELD REGLUGERÐ FRAMKVÆMDASTJÓRNARINNAR (ESB) nr. 665/2013. frá 3.

SAMANTEKT Á EIGINLEIKUM LYFS. Hýdroxýklórókínsúlfat 200 mg (sem jafngildir 155 mg af hýdroxýklórókínbasa).

Rit LbhÍ nr Áhrif aldurs áa, þunga, holda og framleiðsluára. á gagnasafni Hestbúsins

ÞRAUTIR RÖKHUGSUN STÆRÐFRÆÐI

SAMANTEKT Á EIGINLEIKUM LYFS

SAMANTEKT Á EIGINLEIKUM LYFS

Transcript:

Gagnasafnsfræði Venslaalgebra og bestun fyrirspurna Hallgrímur H. Gunnarsson

Inngangur SQL: SQL er declarative mál, segir bara hvað á að reikna, en ekki hvernig. Það er undir gagnasafnskerfinu komið að framkvæma SQL fyrirspurnir á hagkvæman hátt. Í dag munum við fjalla um hvernig það er gert. Spurningar: Hvernig breytum við SQL setningu í framkvæmanlegt forrit (query plan)? Á hvaða hátt má umrita slíkt forrit þ.a. það skili sömu niðurstöðu? Á hvaða hátt má útfæra aðgerðirnar í forritinu? 1

Efni í dag 1. Venslaalgebra 2. Þáttun fyrirspurna 3. Útfærsla venslavirkja 4. Framkvæmd fyrirspurna 5. Bestun fyrirspurna 2

Venslaalgebra SQL: SQL er declarative mál, það segir hvað á að reikna, en ekki hvernig. Venslaalgebra: Venslaalgebra er fræðilegt fyrirspurnarmál byggt á venslalíkaninu. Venslaalgebra er procedural fyrirspurnarmál. Hægt að nota hana til að lýsa hvernig eigi að framkvæma fyrirspurn. Málið byggist upp á svokölluðum venslavirkjum sem vinna með vensl Hægt að tengja venslavirkja saman, úttak úr einum er inntak í næsta, o.s.frv. 3

Málfræði venslaalgebru Segð í venslaalgebru er skilgreind endurkvæmt á eftirfarandi hátt <expr> ::= <relation> <unary-op> <expr> <expr> <binop> <expr> <unary-op> ::= σ π ρ <binary-op> ::= 4

Virkjar Val (e. selection): σ φ (R) Velur hlutmengi staka (lína) úr venslum (töflum) Dálkaval (e. projection): π c (R) Velur út einstaka dálka Tenging (e. join): A c B Sameinar tvö vensl með ákveðnum skilyrðum Nafnabreyting (e. rename): ρ a b (R) Skiptir um nöfn á dálkum 5

Mengjavirkjar Krossfeldi (e. cross product), A B: Sameinar A og B með krossmargfeldi Sammengi (e. set union), A B: Allar línur í A ásamt öllum línum í B Mismunur mengja (e. set difference), A B: Allar línur í A en ekki í B Sniðmengi (e. set intersection), A B: Allar línur í bæði A og B 6

Val (e. selection, filter) Ritháttur: σ φ (R), þar sem φ er röksegð og R er segð í venslaalgebru Merking: Allar raðir í R sem uppfylla skilyrði φ Dæmi: σ A=a1 A B C a1 b1 c1 a2 b2 c2 a3 b3 c3 a1 b4 c4 = A B C a1 a2 c1 a1 b4 c4 7

Dálkaval (e. projection) Ritháttur: π a1,a 2,..,a n (R), þar sem a i er nafn á dálki Merking: Tilgreindir dálkar eru valdir út og öðrum dálkum er hent (Skv. venslalíkaninu ætti einnig að henda út tvítekningum) Dæmi: π A,B A B C a1 b1 c1 a2 b2 c2 = A a1 b1 B a2 b2 8

Krossfeldi (e. cross product) Ritháttur: R S, þar sem R og S eru segðir í venslaalgebru Merking: Krossmargfeldi R og S, þ.e. allar raðir í R tengdar við allar raðir í S Dæmi: A a1 a2 B b1 b2 C c1 c2 = A B C a1 b1 c1 a2 b2 c1 a1 b1 c2 a2 b2 c2 9

Tenging (e. join) Ritháttur: R c S, þar sem c er röksegð, R og S eru segðir í venslaalgebru Merking: Allar raðir í R og S sem uppfylltu tengiskilyrðið c, sameinaðar í nýjum venslum Hægt að skilgreina R c S sem σ c (R S) Dæmi: A a1 a2 a3 B b1 b2 b3 A=C C a1 a1 a5 D d1 d2 d3 = A B C D a1 b1 a1 d1 a1 b1 a1 d2 10

Nafnabreyting (e. rename) Ritháttur: ρ s (R), þar sem s er mengi af nafnabreytingum, t.d. { a x, b y } Merking: Ef s = { a x } þá fær dálkur sem heitir a í inntakinu nafnið x í úttakinu Dæmi: ρ { A X } A B C a1 b1 c1 a2 b2 c2 = X B C a1 b1 c1 a2 b2 c2 11

Eiginleikar valvirkjans Val er idempotent: (hefur engin áhrif að framkvæma sama val oft) σ φ (R) = σ φ σ φ (R) Val er víxlið: (röðin á vali skiptir ekki máli) σ A σ B (R) = σ B σ A (R) Brjóta upp val með AND skilyrði: σ A B = σ A (σ B (R)) = σ B (σ A (R)) Brjóta upp val með OR skilyrði: σ A B = σ A (R) σ B (R) 12

Eiginleikar tengivirkjans Tenging er tengin (e. associative): (R S) T = R (S T ) Selection push-down: Ef φ vísar bara í dálka í S þá gildir: σ φ (R S) = R σ φ (S) 13

Dæmi um notkun á reglum Fyrirspurn: σ R.a=100 S.b=200 R.x=S.y (R S) Brjótum valið upp: σ R.a=100 (σ S.b=200 (σ R.x=S.y (R S))) Endurröðum: σ R.x=S.y (σ S.b=200 (σ R.a=100 (R S))) Notum selection push-down regluna: σ R.x=S.y ((σ R.a=100 (R) σ S.b=200 (S)) 14

Þáttun fyrirspurna Þáttun: SQL fyrirspurn er þýdd yfir í jafngilda fyrirspurn í venslaalgebru (fáum segðatré með venslavirkjum) Segð í venslaalgebru lýsir því hvernig fyrirspurnin er framkvæmd (ólíkt SQL). Hægt að vinna með tréið og breyta segðinni skv. reglum til að breyta því hvernig niðurstaðan er reiknuð. Logical vs. physical: Einstakir hnútar í segðatrénu eru venslavirkjar. Ein tegund af venslavirkja, t.d. tenging (e. join), getur haft margar útfærslur sem hentar við mismunandi aðstæður. Venslavirki af tiltekinni tegund er kallaður logical operator, en þegar það er búið að velja útfærslu þá tölum við um physical operator. 15

Útfærsla venslavirkja Mismunandi aðstæður: Til margar mismunandi útfærslur á hverjum venslavirkja. Allar útfærslur uppfylla sömu lýsingu, þ.e. hafa sömu eiginleika, en ganga til verka á ólíkan hátt. Veljum útfærslu eftir aðstæðum, t.d. gæti ein útfærsla gert ráð fyrir að inntakið sé raðað en önnur ekki. Útfærsla á tengingu (e. join): nested loops, hash join og merge join Útfærsla á samantekt (e. aggregation): hashing og sorting Útfærsla á lestri (e. scan): index scan, sequential scan, full index scan 16

Ritháttur Fjöldi síðna (e. number of pages) Fjöldi síðna í R er ritað R p Fjöldi raða (e. number of rows) Fjöldi raða í R er ritað R n 17

Tenging með nested loop join Útfærsla: function nljoin(r,s,c): foreach tuple r in R: foreach tuple s in S: if c(r,s): emit <r,s> I/O kostnaður: Lesum allar síður í ytri töflunni og fyrir hverja röð þar lesum við alla innri töfluna Kostnaðurinn er því: O(R p + R n S p ) 18

Tenging með block nested loop join Hugmynd: Byggir á sömu hugmynd og nested loop join nema við nýtum okkur vinnsluminni til að vinna með margar síður úr ytri töflunni samtímis. Þá þarf ekki að lesa innri töfluna fyrir hverja röð í ytri töflunni, heldur bara einu sinni per sett af síðum úr ytri töflunni sem rúmast samtímis í vinnsluminni. I/O kostnaður: Látum M standa fyrir fjölda síðna af vinnsluminni sem má nota (buffer pages) Þá er kostnaðurinn: O(R p + R p M S p) 19

Tenging með index nested loop join Hugmynd: Byggir á nested loop join en ef önnur taflan er með flýtivísi sem passar við tengiskilyrðið þá notum við hana sem innri töfluna og flettum upp í henni með flýtivísinum. I/O kostnaður: O(R p + R n C(S)), þar sem C(S) er kostnaðurinn við að fletta upp lykli í S með flýtivísinum. Það kostar um 1.2 I/O að fletta upp í hakkavísi, en 2-4 I/O að fletta upp í B+ trévísi. Kostnaður við að sækja gagnasíðurnar veltur á klösun vísisins. Ef hann er alveg óklasaður (versta tilfelli) þá er það 1 I/O per röð. 20

Tætitenging (e. hash join) Hugmynd: Lesum smærri töfluna og byggjum tætitöflu í minni út frá tengilyklinum. Lesum síðan stærri töfluna og leitum í tætitöflunni eftir röð sem passar. (Virkar bara þegar tengiskilyrðið er =, virkar ekki fyrir >, >=, <, <=, etc.) I/O kostnaður: Ef það er pláss fyrir alla tætitöfluna í minni þá er I/O kostnaðurinn bara lestur á báðum töflunum, þ.e. O(R p + S p ) 21

Tenging með samröðun (e. sort-merge join) Hugmynd: Notum sameiningu (e. merge) á tvær raðaðar töflur til að finna þær raðir sem passa saman. (Virkar mjög svipað og venjulegt merge sort.) Ef töflurnar eru ekki í röð samkvæmt tengilyklinum þá þarf að raða þeim fyrst. Þessi aðferð hentar því best þegar inntakstöflurnar eru þegar í röð, t.d. þegar fyrri venslavirki raðaði þeim eða hægt að sækja töfluna í röð (B+ trévísir á tengilyklinum). Samröðun virkar fyrir fleiri samanburðarvirkja en tætitenging, þ.e. virkar fyrir <,, =, >, 22

Tenging með samröðun, framhald I/O kostnaður: Ef R og S eru í röð þá þarf bara að sameina (e. merge) og kostnaðurinn er O(R p + S p ) Ef R og S eru ekki í röð þá þarf fyrst að raða þeim. Þá veltur kostnaðurinn á því hvort það sé nægilegt minni til að raða töflunum í einni umferð í minni eða hvort það þurfi margar umferðir og umsýslu á disk. Ytri röðun (external n-way merge sort): Fjöldi umferða: 1 + log B 1 N/B, þar sem N er fjöldi síða í skrá og B er fjöldi síða í minni sem má nota (buffer pages) Kostnaður: 2N fjöldi umferða 23

Aðgangsleiðir (e. access methods) Heap scan: (sequential scan) Runubundinn (sequential) lestur yfir alla töfluna Index scan: Lestur með flýtivísi, minna af gögnum, en vanalega random I/O Full index scan: Runubundinn (sequential) lestur yfir allan flýtivísinn Útfærsla: Vanalega til sérstakir venslavirkjar fyrir lestur (scan), þ.e. heapscan venslavirki og index scan venslavirki. 24

Framkvæmd fyrirspurna Áætlun: (e. query plan) Áætlun um framkvæmd (query plan) er táknuð sem tré þar sem hver hnútur er venslavirki. Framkvæmd: Tréið er framkvæmt bottom-up, byrjum í laufunum og vinnum okkur upp. Rótarhnúturinn er síðasta aðgerðin. Laufin eru scan/lookup hnútar (heap scan, index scan). Algeng útfærsla: Allir venslavirkjar útfæra s.k. iterator interface. Hægt að biðja iterator um næsta gildi og athuga hvort hann sé kominn út á enda. Gögn eru dregin upp tréið, þegar rótin er beðin um gildi þá er reiknað niður tréið. 25

Bestun fyrirspurna Bestunarferli: Bestun er framkvæmd af svokölluðum query planner (eða query optimizer) Til mörg tré (áætlanir/plön) sem gefa sömu niðurstöðu. Markmiðið er að finna hagkvæmasta tréið. Notum tvær aðferðir: Gögn: 1. Notum algebrureglur til að endurraða virkjum án þess að breyta niðurstöðunni 2. Reynum að velja hentugt reiknirit fyrir hvern venslavirkja Bestun byggir oft á tölfræðilegum upplýsingum um töflurnar, t.d. dreifingu á gildum, o.s.frv. Getur hjálpað við að velja rétt reiknirit. 26

Bestun frh. Kostnaður Kostnaður hnúts (framkvæmd venslavirkjans í þeim hnúti) er fall af inntaki hans, mikilvægt að raða hnútum (aðgerðum) rétt Minnka snemma: Almennt gott að sigta raðir snemma og minnka stærðina á innri venslum milli hnúta (intermediate result sets) Bókhald í trénu: Gagnlegt að láta upplýsingar eins og röð gagna (sort order) fylgja með upp tréið. Oft hægt að velja hagkvæma venslavirkja ef við vitum að inntakið er raðað. 27

Kerfislistar (e. system catalog) Kerfislisti: Bestun: Gagnasafnskerfi geymir ýmsar upplýsingar um gagnasöfn í svokölluðum kerfislistum. Geymir allar upplýsingar um töflur, hvaða dálkar eru til staðar, hvaða flýtivísar eru til staðar, allar sýndartöflur, tölfræði um gögnin í töflunum, o.s.frv. Bestunarferlið styðst við kerfislistann, nauðsynlegt að vita hvaða vísar eru til staðar, stærð á töflum, tölfræði um dreifingu o.s.frv. 28

Hvað þarf að ákveða í bestun? Aðgangsleið: Veljum aðgangsleið (e. access path) fyrir hverja töflu. Veljum þá aðgangsleið sem hentar best, þ.e. sem lágmarkar I/O aðgerðir. Reiknirit fyrir venslavirkja: Veljum reiknirit fyrir hvern venslavirkja í trénu. Veltur á stöðu gagnasafnsins (fengið úr kerfislistanum) og inntaki úr öðrum hnútum. Röð venslavirkja: Ákveða uppbyggingu trésins og röð aðgerða, hvað kemur á undan hverju. 29