Oppiva kyselynoptimointi

Koko: px
Aloita esitys sivulta:

Download "Oppiva kyselynoptimointi"

Transkriptio

1 Oppiva kyselynoptimointi Kustannusperustaisen optimoijan ongelmia ja yksi ratkaisu: Oppiva optimoija. Riku Räsänen Kantamestarit OY 1

2 Sisältö Kustannusperustainen optimointi ja sen ongelmia Yleiskatsaus kustannusperustaiseen optimointiin Ongelmia Kyselyn seuraaminen Staattinen oppiminen Dynaaminen oppiminen Tulevaisuus? 2

3 Kustannusperustainen optimointi: Pikainen yleiskatsaus SQL on ilmaisuvoimainen kieli, jolla käyttäjä kertoo mitä tietoa käsitellään. Tietokannanhallintajärjestelmän tehtäväksi jää se, miten tietoa käsitellään. SQL-lause voidaan suorittaa useilla eri tavoilla, jotka kaikki palauttavat saman tuloksen, mutta joiden suoritusajoissa saattaa olla valtavia, jopa useiden kertaluokkien eroja. Optimoijan tehtävänä on valita SQL-lauseelle mahdollisimman tehokas suoritussuunnitelma. Kustannusperustainen optimoija (cost-based optimizer, CBO) generoi SQL-lauseelle (periaatteessa) kaikki suoritussuunnitelmien permutaatiot, arvioi kullekin kustannuksen ja valitsee tehokkaimman suoritussuunnitelman. Optimoija analysoi SQL-lauseen ja pyrkii arvioimaan kuinka monta riviä / blokkia suoritussuunnitelman operaatio käyttää. Tähän optimoija tarvitsee tietokannan objekteista kerätyt tilastotiedot, kuten taulun rivien lukumäärän. Lopullinen kustannus on useimmiten eri tekijöiden painotettu summa, yleensä eniten painoa annetaan IO-kustannukselle. 3

4 Kustannusperustainen optimointi: Predikaatti, kardinaliteetti ja selektiviteetti Kardinaliteetti (pilkunviilajille monikkojen lukumäärä ) ja selektiviteetti ( valitsevuus ) ovat keskeisiä käsitteitä optimoinnissa. Kardinaliteetti kertoo rivien lukumäärän, selektiviteetti kertoo kuinka iso osa riveistä täyttää annetun predikaatin eli ehdon, kuten valintaehdon tai liitosehdon. 4

5 Kustannusperustainen optimointi on hyvä juttu, mutta ei ongelmaton Kustannusperustainen optimointi on älykäs ratkaisu: Optimoija osaa (teoriassa) ilman käyttäjän apua valita optimaalisen, tai edes hyvän, suoritussuunnitelman SQL-koodaajan ei tarvitse tietää miten optimoijaa huijataan käyttämään tai olemaan käyttämättä indeksejä, missä järjestyksessä taulut pitää nimetä FROM-osassa, jne... Sama sovellus eri datoilla voi vaatia toisessa tapauksessa indeksin, toisessa tauluselauksen käyttöä. Kustannusperustaista optimoijaa käytettäessä ei ole tarvetta tehdä eri SQL-lauseita näille tapauksille. Kustannusperustainen optimoija on kuitenkin altis useille ongelmille. Katsotaan muutamia tarkemmin. 5

6 Kustannusperustaisen optimonnin ongelmia: Monimutkaiset SQL:t Teoreettinen kustannusperustainen optimoija generoi SQL-lauseelle kaikki suoritussuunnitelmien permutaatiot. Ongelmaksi muodostuu permutaatioiden lukumäärä, joka kasvaa eksponentiaalisesti liitosten lukumäärän kasvaessa [13]. Koska hyvin monimutkaisissa SQL-lauseissa optimointiaika venähtäisi kohtuuttomaksi, optimoijat käyttävät yleensä menetelmiä permutaatioiden määrän vähentämiseksi. Jo varhain on käytetty dynaamista ohjelmointia, jolla voidaan loiventaa eksponentiaalisuuden kerrointa. Tämän tapainen menetelmä on myös käytössä Oraclessa. Oraclessa liitosjärjestys pyritään tekemään kasvavassa suuruusjärjestyksessä, ja optimoijalla on permutaatioille raja-arvo, OPTIMIZER_MAX_PERMUTATIONS. Raja-arvon käyttäminen kuitenkin tarkoittaa, että teoriassa on mahdollista, että optimoija ei löydä tehokkainta suoritussuunnitelmaa. 6

7 Kustannusperustaisen optimonnin ongelmia: Tilastot Optimaalisen suoritussuunitelman valitsemiseen optimoija tarvitsee mahdollisimman tarkat tilastot. Mitä tarkemmat tilastot, sitä parempi (ainakin teoriassa!). Tilastot eivät kuitenkaan aina ole ajan tasalla, eivätkä aina riittävän tarkkoja. Pahimmissa tapauksissa esimerkiksi histogrammien tarkkuus ei riitä kuvaamaan tarpeeksi tarkasti sarakkeen arvojen jakaumissa olevia piikkejä / reikiä, jolloin kardinaliteettiarvioihin syntyy virhettä... ja monimutkaisissa SQL-lauseissa virheillä on taipumusta kertautua. 7

8 Kustannusperustaisen optimonnin ongelmia: Tilastot (jatkoa...) Yksinkertainen esimerkki (tarkat tilastot, mutta ei histogrammeja): SELECT * FROM dd_objects obj WHERE owner = 'SYS'; Id Operation Name Rows SELECT STATEMENT TABLE ACCESS BY INDEX ROWID DD_OBJECTS 2853 * 2 INDEX RANGE SCAN IDX_DDOBJ_OWNER Histogrammien kanssa: Id Operation Name Rows SELECT STATEMENT * 1 TABLE ACCESS FULL DD_OBJECTS

9 Kustannusperustaisen optimonnin ongelmia: Korrelaatio Esimerkki (taulussa täydelliset tilastot ja kyselyssä käytetyissä sarakkeissa indeksit ja frekvenssihistogrammit): SELECT object_id FROM dd_objects WHERE owner = 'SYS' AND object_type = 'SYNONYM'; Id Operation Name Rows SELECT STATEMENT 8759 * 1 TABLE ACCESS FULL DD_OBJECTS Toteutunut: Rows Row Source Operation TABLE ACCESS FULL DD_OBJECTS 9

10 Kustannusperustaisen optimonnin ongelmia: Korrelaatio (jatkoa...) Miksi optimoija tekee näin ison virheen (8759 vs. 6)? Optimoija tietää kyllä, että SYS omistaa objektia ja että objekteista on synonyymejä, mutta optimoijalla ei ole mitään tilastoa, joka kertoisi sarakkeiden OWNER ja OBJECT_TYPE välisestä korrelaatiosta. Niinpä optimoija tekee tyypillisen oletuksen, että predikaatit OWNER='SYS' ja OBJECT_TYPE='SYNONYM' ovat toisistaan riippumattomia ja yksinkertaisesti kertoo näiden valitsevuudet keskenään. ROUND (((21526 / 45562) * (18539 / 45562)) * ) =

11 Kustannusperustaisen optimonnin ongelmia: Korrelaatio (jatkoa...) Korrelaatio-ongelma ( independence of predicates ) [2] on hankala, koska se on riippuvainen datasta: Ongelma esiintyy usein luonnollisessa datassa Ongelmatapaukset, kuten esimerkin tapaus, voidaan ratkaista esim. SQL-vihjeillä (hints). Tämä tarkoittaisi, että jokainen tapaus pitäisi koodata erikseen mutta sama sovellus voi eri dataseteillä sisältää erilaisia korrelaatioita ja vaikka joku jaksaisi väsätä ko. SQL:t, Library Cache kuormittuisi periaattessa samanlaisilla SQL-lauseilla. Optimoijalla pitäisi olla keino ratkaista tämä ongelma OPTIMIZER_DYNAMIC_SAMPLING tasolta 4 alkaen auttaa, mutta ei ratkaise kaikkia ongelmia 11

12 Kustannusperustaisen optimonnin ongelmia: Liitokset Liitoksissa optimoija turvautuu usein oletuksiin. Esimerkki: SELECT * FROM dd_objects obj JOIN dd_users usr ON (obj.owner# = usr.user_id); Id Operation Name Rows SELECT STATEMENT * 1 HASH JOIN TABLE ACCESS FULL DD_USERS 17 3 TABLE ACCESS FULL DD_OBJECTS Rows Row Source Operation HASH JOIN (cr=2387 pr=0 pw=0 time= us) 17 TABLE ACCESS FULL DD_USERS (cr=3 pr=0 pw=0 time=487 us) TABLE ACCESS FULL DD_OBJECTS (cr=2384 pr=0 pw=0 time= us) Pieleen lähes kertoimella 0,5. DD_OBJECTS-taulussa on PUBLICkäyttäjän omistamia objekteja, mutta PUBLIC-käyttäjää ei ole DD_USERS-taulussa. 12

13 Kustannusperustaisen optimonnin ongelmia: Liitokset (jatkoa...) Sekoitetaan mukaan korrelaatio ja optimoija turvautuu arvauksiin: SELECT * FROM dd_objects obj JOIN dd_users usr ON (obj.owner# = usr.user_id) WHERE usr.username = 'OUTLN'; Id Operation Name Rows SELECT STATEMENT TABLE ACCESS BY INDEX ROWID DD_OBJECTS NESTED LOOPS 1427 * 3 TABLE ACCESS FULL DD_USERS 1 * 4 INDEX RANGE SCAN IDX_DDOBJ_OWNER# Rows Row Source Operation 7 TABLE ACCESS BY INDEX ROWID DD_OBJECTS (cr=10 pr=0 pw=0 time=614 us) 9 NESTED LOOPS (cr=7 pr=0 pw=0 time=3294 us) 1 TABLE ACCESS FULL DD_USERS (cr=4 pr=0 pw=0 time=274 us) 7 INDEX RANGE SCAN IDX_DDOBJ_OWNER# (cr=3 pr=0 pw=0 time=176 us) Iso arviointivirhe, tosin suoritussuunnitelma on vielä hyvä. Mutta ongelmia seuraa... 13

14 Kustannusperustaisen optimonnin ongelmia: Virheiden kasautuminen Ja jotta asiat eivät olisi liian helppoja, arviointivirheet voivat kasautua pahimmillaan jopa eksponentiaalisesti [3]. Tarpeeksi monta liitosta, muutamat epätarkat tilastot, hieman korrelaatiota ja suoritussuunnitelma, jonka ensimmäiset vaiheet ovat optimaalisia ei olekaan enää optimaalinen suoritussuunnitelman loppuvaiheessa. Jos optimoijan arvioimat välitulosten koot heittävät liikaa, liitosten selektiviteettien laskeminen tuottaa yhä enemmän satunnaisia tuloksia ja johtaa huonojen access pathien ja liitosmenetelmien käyttöön. 14

15 Kustannusperustaisen optimonnin ongelmia: Virheiden kasautuminen (jatkoa) Esimerkki (laajennetaan edellistä kyselyä yhdellä liitoksella): SELECT * FROM dd_objects obj JOIN dd_users usr ON (obj.owner# = usr.user_id) JOIN sys_col$ scol ON (obj.object_id = scol.obj#) WHERE usr.username = 'OUTLN'; Id Operation Name Rows SELECT STATEMENT 1509 * 1 HASH JOIN TABLE ACCESS BY INDEX ROWID DD_OBJECTS NESTED LOOPS 1427 * 4 TABLE ACCESS FULL DD_USERS 1 * 5 INDEX RANGE SCAN IDX_DDOBJ_OWNER# TABLE ACCESS FULL SYS_COL$ Rows Row Source Operation HASH JOIN (cr=389 pr=0 pw=0 time=5072 us) 7 TABLE ACCESS BY INDEX ROWID DD_OBJECTS (cr=7 pr=0 pw=0 time=719 us) 9 NESTED LOOPS (cr=5 pr=0 pw=0 time=2517 us) 1 TABLE ACCESS FULL DD_USERS (cr=3 pr=0 pw=0 time=245 us) 7 INDEX RANGE SCAN IDX_DDOBJ_OWNER# (cr=2 pr=0 pw=0 time=101 us) TABLE ACCESS FULL SYS_COL$ (cr=382 pr=0 pw=0 time= us) 15

16 Kustannusperustaisen optimonnin ongelmia: Virheiden kasautuminen (jatkoa) Edellinen SQL-lause, pakotettuna vihjeillä käyttämään indeksejä ja nested loopsia. Optimoijan riviarviot pysyvät samana, mutta: Id Operation Name Rows SELECT STATEMENT TABLE ACCESS BY INDEX ROWID SYS_COL$ 1 2 NESTED LOOPS NESTED LOOPS 1427 * 4 TABLE ACCESS FULL DD_USERS 1 5 TABLE ACCESS BY INDEX ROWID DD_OBJECTS 2853 * 6 INDEX RANGE SCAN IDX_DDOBJ_OWNER# 2853 * 7 INDEX RANGE SCAN IDX_SYSCOL_ Rows Row Source Operation TABLE ACCESS BY INDEX ROWID SYS_COL$ (cr=29 pr=0 pw=0 time=613 us) 50 NESTED LOOPS (cr=25 pr=0 pw=0 time=22296 us) 7 NESTED LOOPS (cr=12 pr=0 pw=0 time=793 us) 1 TABLE ACCESS FULL DD_USERS (cr=4 pr=0 pw=0 time=238 us) 7 TABLE ACCESS BY INDEX ROWID DD_OBJECTS (cr=8 pr=0 pw=0 time=469 us) 7 INDEX RANGE SCAN IDX_DDOBJ_OWNER# (cr=4 pr=0 pw=0 time=89 us) 42 INDEX RANGE SCAN IDX_SYSCOL_3 (cr=13 pr=0 pw=0 time=313 us) Consistent reads: 29 vs 389, CPU time: 613us vs 5072 us. 16

17 Yksi ratkaisu ongelmiin: Oppiva optimoija Ongelmia siis on olemassa. Edellä esitettyihin ongelmiin on esitetty ratkaisuja, yksi niistä on oppiva optimoija: Oppiva optimoija seuraa kyselyn suoritusta ja saamastaan palautteesta pystyy korjaamaan tekemiään virheitä. Oppivat optimoijat ovat prototyyppiasteella, eikä tämä esitys kerro mistään tuotteesta. Tarkoitus on tarkastella joidenkin alustavien oppivien optimoijien prototyyppien toimintaa. 17

18 Kyselyn seuraaminen Oppivan optimoijan tarvitseman palautteen kerääminen tapahtuu kyselyä seuraamalla. Ideassa sinänsä ei ole mitään uutta, ensimmäiset maininnat kyselyn seuraamisesta löytyvät vähintäänkin 80-luvulta [6], ellei aiemmin. Kyselyä seurataan lisäämällä suoritussuunnitelmaan erillinen seurantaoperaatio. Käytännössä seurantaoperaatio kannattanee kytkeä suoraan varsinaisiin operaatioihin. Yksinkertaisin seurattava yksikkö on kardinaliteetti: Kuinka monta riviä operaatioon menee sisään, kuinka monta riviä tulee ulos ja näistä voidaan laskea myös operaation todellinen selektiviteetti. Myös muita yksiköitä voidaan seurata: tauluselauksessa blokkien lukumäärää, operaation käyttämää CPU-aikaa tai muistitila jne. Yksinkertaisuuden vuoksi tässä esityksessä käytetään vain kardinaliteettia. 18

19 Kyselyn seuraaminen (jatkoa...) Kyselyn seuraamisen kuorma ei välttämättä ole suuri. Pelkkä kardinaliteetin seuraaminen toteutuu yksinkertaisella laskurin kasvattamisella, kuten myös useimpien muiden tarkkailtavien tietojen. Kyselyn seuraaminen voidaan jopa laajentaa suoraan tilastojen keräämiseksi [8]. Full-tablescanin aikana voitaisiin analysoida taulun blokkien lukumäärä, rivin keskimääräinen pituus ja jopa (tosin jo näkyvällä lisäkustannuksella) sarakkeiden eri arvojen lukumäärät ja pienimmät ja suurimmat arvot. Indeksien kohdalla indeksin korkeus saadaan joka kerta kun indeksiä käytetään. Tilastoja ei tietenkään tarvitse kerätä joka suorituskerralla. 19

20 Staattinen oppiminen Seurannassa käytetyt laskurit kertovat suoraan, kuinka hyviä optimoijan arviot olivat. Tätä tietoa voidaan melko helposti käyttää hyväksi staattisessa oppimisessa. Tauluselauksessa laskurit kertovat taulun rivimäärän Helppo laajentaa myös laskemaan mm. taulun blokit, rivin keskimääräisen pituuden jne... Predikaattien kanssa laskurit kertovat ko. predikaatin selektiviteetin Tauluselaus valintaehdolla antaa kaksi tärkeää tietoa: taulun todellisen kardinaliteetin ja accesspredikaattien selektiviteetin Ideaa voidaan käyttää valitsevuuden osalta myös indeksin kautta haettaessa. Tällöin voidaan lisäksi aina tarkistaa mm. indeksin korkeus. Taulun rivimäärää ei tietenkään saada. 20

21 Staattinen oppiminen (jatkoa...) Tarkastellaan seuraavaa (kuvitteellista) kyselyä: SELECT * FROM asiakas WHERE ika BETWEEN 18 AND 25; Esimerkki (kuvitteellinen), jos optimoija valitsee full-tablescanin: Vaihe kard (arvio) kard (tod.) sel (arvio) sel (tod.) FILTER (access) ,0666 0,0114 TABLESCAN (full) Tauluselauksen aikana suorituksessa selattiin riviä läpi, joista täytti valintaehdon ika BETWEEN 18 AND 25. Kuinka näitä havaintoja voidaan käyttää? 21

22 Staattinen oppiminen (jatkoa...) Havaitut arvot tallennetaan tietohakemistoon ja näitä arvoja käytetään seuraavalla kerralla, kun kysely optimoidaan. Havaitut arvot kannattanee tallentaa korjauskertoimina, ei absoluuttisina arvoina [5] Tietokantaobjektien korjauskertoimet on helppo tallentaa mutta selektiviteetit voidaan tallentaa myös operaatiokohtaisesti Edellisen kalvon esimerkissä FILTER-operaation selektiviteetti predikaatille ika BETWEEN 18 AND 25 voidaan tallentaa Myös liitoksille ja muille operaatioille voidaan tallentaa selektiviteettien korjauskertoimet Vaatii puumuotoisen datan (vähän kuin suoritussuunnitelma) kirjaamista tietohakemistoon 22

23 Staattinen oppiminen (jatkoa...) Pienten arviointivirheiden kohdalla ei tarvitse kirjata mitään Kursori voidaan invalidoida, jos havaitaan merkittävä arviointivirhe. Näin voidaan reagoida arviointivirheeseen seuraavalla suorituskerralla. Optimointivaiheessa tietohakemistosta luetaan varsinaiset tilastotiedot ja korjauskertoimet. Optimoija muodostaa kustannusarvion käyttäen tilastotietoja ja korjauskertoimia Huom: Oracle 10:n SQL-profiilit ovat hieman sukua staattiselle oppimiselle. 23

24 Dynaaminen oppiminen Staattinen oppiminen on hyödyllistä, jos SQL-lause suoritetaan useita kertoja, mutta ei auta ajossa olevaan kyselyyn. Raskas kysely saattaa lisäksi olla ainutkertainen, eikä näin ollen hyödytä tulevaisuudessakaan. Sen sijaan järkevämpää olisi, jos vakavan arviointivirheen havaitsemisen jälkeen kyselyn suoritussuunnitelmaa voitaisiin vaihtaa ajon aikana, eli käyttää dynaamista optimointia [1,4,7,9]. Dynaaminen optimointi ei ole ongelmatonta: Milloin arviointivirhe on vakava? Muuttuisiko suoritussuunnitelma havaituilla arvoilla? Olisiko uudelleenoptimoitu suoritussuunnitelma tehokkaampi? Paljonko uudelleenoptimointi vie aikaa? Entä rivien putkitus (pipelining) käyttäjälle?!?! 24

25 Dynaaminen optimointi: Valvontapisteet Suorituksen valvonta ja uudelleenoptimointipäätös tehdään valvontapisteessä [4]. Valvontapiste on periaatteessa erillinen operaattori suoritussuunnitelmassa Valvontapisteet sijoitetaan suoritussuunnitelmassa paikkaan, jossa uudellenoptimointi voidaan tehdä. Käytännössä tarvitaan erilaisia valvontapisteitä. 25

26 Dynaaminen optimointi: Passiivinen valvontapiste Yksinkertaisin valvontapiste on passiivinen valvontapiste (lazy checkpoint). Sijoitetaan välittömästi materialisaatiopisteen (MP) jälkeen. MP syntyy, kun SQL-lauseen suorituksessa tehdään ns. blokkaava operaatio, jonka täytyy valmistua ennen kuin yhtään riviä voidaan putkittaa kyselypuussa eteenpäin. Yleisin esimerkki materialisaatiopisteestä on SORT-operaatio. MP takaa riskittömän uudelleenoptimointipaikan, sillä MP:n välitulos on välttämätön kyselyn etenemisen kannalta, eikä käyttäjälle ole välitetty vielä yhtään riviä. Välituloksen valmistuttua voidaan tutkia, montako riviä välituloksessa on ja arvioida, olisiko uudelleenoptimointi kannattavaa. Optimoijalla on käytettävissä välituloksen tarkka rivimäärä 26

27 Dynaaminen optimointi: Passiivinen valvontapiste (jatkoa...) Jos päädytään uudelleenoptimoimaan koko välitulos voidaan heittää pois ja suorittaa uudelleen tai käyttää hyväksi kuten väliaikaista taulua. Luonnollisia MP:itä syntyy aika ajoin (mm. SORT-operaatioita aiheuttavat MERGE JOIN, ORDER BY, GROUP BY, DISTINCT...), mutta MP voidaan myös pakottaa. 27

28 Esimerkki: Dynaaminen optimointi: Passiivinen valvontapiste (jatkoa...) join (hash) Valvontapiste join (merge) table access (full) OSTOPAIKAT sort sort Arvioitu kardinaliteetti: Havaittu todellinen: 100 table access (full) ASIAKKAAT table access (full) KUITIT 28

29 Dynaaminen optimointi: Passiivinen valvontapiste (jatkoa...) Uudelleenoptimoitaessa harkittavia suoritussuunnitelmia: join (hash) join (nested loops) join (nested loops) table access (full) OSTOPAIKAT join (nested loops) index range scan index range scan index range scan table access (full) TEMPORARY index range scan table access (full) OSTOPAIKAT table access (by index rowid) ASIAKKAAT table access (by index rowid) KUITIT table access (by index rowid) KUITIT 29

30 Dynaaminen optimointi: Passiivinen valvontapiste (jatkoa...) Passiivisen valvontapisteen ongelma? Koko välitulos on materialisoitava ennen tarkistuksia. Välitulos voi olla erittäin iso......ja silloin kirjoitetaan levylle......ja reagointi arviointivirheisiin on hidasta Vaikka välitulos pysyisi muistissa, reagointi tapahtuu vasta kun koko välitulos on materialisoitu. 30

31 Dynaaminen optimointi: Aktiiviset valvontapisteet Arviointivirheisiin voidaan reagoida nopeammin. Asetetaan suoritussuunnitelmaan aktiiviinen valvontapiste (eager checkpoint), jolle annetaan läpikulkevien rivien ylä- ja/tai alaraja. Uudelleenoptimointi käynnistetään jos: VP:llä on yläraja ja rivejä on kulkenut lävitse yli raja-arvon Huom! Optimoijalla ei ole käytettävissä tarkkaa rivimäärää! Raja-arvo kannattaa yrittää valita siten, että raja-arvon kohdalla suoritussuunnitelma vaihtuisi. VP:llä on alaraja ja VP:lle rivejä syöttävä operaatio (row-source) päättyy Mitä jos suoritussuunnitelmassa on putkitusta? Miten estetään, ettei käyttäjä näe samaa riviä useammin kuin kerran? 31

32 Dynaaminen optimointi: Aktiivinen valvontapiste ilman kompensaatiota Yksinkertaisimmillaan innokas valvontapiste voidaan sijoittaa puussa materialisaatiopisteen alle. Ylärajan ylittyessä uudelleenoptimointi aiheuttaa materialisaatiopisteen alla olevan puunosan uudelleen suorittamisen. Valvontapisteen ei tarvitse sijaita välittömästi materialisaatiopisteen alla. Valvontapisteen alla olevien materialisaatiopisteiden välituloksia voidaan käyttää uudelleenoptimoinnissa... jos ne ovat vielä olemassa. Etuja: Haittoja: Helppo sijoittaa Ei ongelmia putkituksen kanssa Vaatii materialisaatiopisteen Mahdollisesti iso osa suoritussuunnitelmaa voidaan joutua heittämään hukkaan 32

33 Dynaaminen optimointi: Aktiivinen valvontapiste ilman kompensaatiota (jatkoa) join (merge) join (hash) sort sort join (hash) table access (full) OSTOPAIKAT Join (nested loops) table access (full) OSTOPAIKAT table access (full) ASIAKKAAT table access (full) KUITIT table access (full) ASIAKKAAT table access (full) KUITIT Tämän osan välitulos (kerätty materialisaatiopisteeseen) heitetään pois ja koko kysely suoritetaan uudestaan 33

34 Dynaaminen optimointi: Aktiivinen puskuroitu valvontapiste Toinen tapa sijoittaa innokas arviointipiste on käyttää puskurointia. Valvontapisteen yhteyteen sijoitetaan puskuri, jolle määritetään ylä- ja/tai alaraja. Valvontapisteen läpi kulkevat rivit puskuroidaan, eikä niitä välitetä vielä eteenpäin. Putkitettu suoritus pysähtyy hetkeksi. Jos puskuri täyttyy (overflow) tai puskuria syöttävä operaattori päättyy (underflow) ennen kuin puskuri on täysi, tarkistetaan, tarvitseeko uudelleenoptimoida. Overflow:n tapauksessa puskuria syöttävä operaattori pysäytetään. Uudelleenoptimoitaessa overflow-tapauksessa puskurin sisältämä välitulos heitetään pois ja suoritussuunnitelma puskurin alla suoritetaan uudestaan. Jos uudelleenoptimointia ei tehdä, rivit luetaan ensin puskurista ja sitten puskuria syöttävältä operaattorilta. 34

35 Dynaaminen optimointi: Aktiivinen puskuroitu valvontapiste (jatkoa) Etuja: Haittoja: Ei vaadi materialisaatiopistettä Ei putkitusongelmaa Nopea reagointi Iso osa suoritussuunnitelmaa voidaan joutua suorittamaan uudestaan Puskurin mielellään mahduttava muistiin (kokorajoitukset) Putkitetussa suorituksessa voi syntyä latenssi Latenssi syntyy, jos puskuri täyttyy hitaasti. Esimerkkeinä tauluselaus, hajautettu kysely, iso puskuri... Tapahtuu normaalissa suorituksessa ilman uudelleenoptimointia 35

36 Dynaaminen optimointi: Aktiivinen kompensoitu valvontapiste Jos putkitettu suoritus on välttämätöntä ja latensseja ei suvaita, voidaan käyttää kompensointia. Kompensoinnissa rivit voidaan putkittaa käyttäjälle, mutta mikäli kysely uudelleenoptimoidaan ja suoritetaan uudestaan, tulosjoukosta poistetaan käyttäjälle jo palautetut rivit. Käyttäjälle palautettaville riveille generoidaan yksilöllinen tunniste (huom: ROWID tai riville generoitu hash-arvo ei välttämättä riitä) Tunniste tallennetaan aputauluun (hash-rakenne ehkä paras) Uudelleenoptimoinnin tapahtuessa tulosjoukolle tehdään ANTI- JOIN aputauluun, jolloin tulosjoukosta poistetaan käyttäjälle jo palautetut rivit. 36

37 Etuja: Haittoja Dynaaminen optimointi: Aktiivinen kompensoitu valvontapiste (jatkoa...) Nopea reagointi Ei tarvitse puskurointia tai materialisaatiopistettä Välitön putkitus mahdollista Tarvitaan tilaa aputaululle Palautettujen rivien tunnisteiden generointi ja tallennus aiheuttaa kuormaa Koko kysely voidaan joutua suorittamaan uudestaan Täysin putkitetussa suorituksessa ei ole välituloksia, joita voidaan käyttää uudelleenoptimoinnin jälkeen hyväksi Anti-join aiheuttaa lisäkuormaa 37

38 Dynaaminen optimointi: Aktiivinen kompensoitu valvontapiste (jatkoa...) select statement INSERT TEMP (rivitunnisteen generointi ja tallennus) select statement anti-join TEMPORARY (rivitunnisteet) join (nested loops) join (hash) index range scan table access (by index rowid) ASIAKKAAT index range scan table access (by index rowid) KUITIT table access (full) ASIAKKAAT table access (full) KUITIT 38

39 Dynaaminen optimointi: Muita menetelmiä? Edellä esitetyt eivät tietenkään ole ainoita mahdollisia tapoja uudelleenoptimoida, ja uusia mekanismeja kehitetään (kuten [1]). Progressiivinen uudelleenoptimointi on kuitenkin perinteisen optimoijan laajennus ja sinänsä helppo toteuttaa. Täysin toisenlainen lähestyminen on River/Eddies-tyylinen jatkuva optimointi [9], mutta se vaatisi koko optimoijan & SQL-suorituskoneen uudelleenkirjoittamisen, mikä ei ole ainakaan lyhyellä tähtäimellä todennäköistä. 39

40 Tulevaisuus? Tuleeko oppiva optimoija Oracleen? Arvaus: Tulee, ehkä joskus. Jotakin viitettä tämän suuntaisesta löytyy jo nyt, jos näin halutaan tulkita. Esimerkiksi 9i:stä lähtien käytössä on näkymä V$SQL_PLAN_STATISTICS [10,11], jonka sisältö on aivan kuin edellä esitetyssä seurantaoperaatiossa. Myös Tom Kyteä lainaten: The optimizer, in looking at: [SQL-statement] has NO CLUE as to the correlation between the various columns. there are no statistics in 9i and before that would help it -- it is a very difficult problem actually.... I can say in a future release of the database -- things like this will be solvable without the use of hinting (Toiveajattelua?) 40

41 Tulevaisuus? (jatkoa...) Onko oppivalle optimoijalle tarvetta? Kyllä: Tietokannat kasvavat ja tulevat monimutkaisemmiksi. Kymmenien taulujen liitokset ovat olleet jo arkipäivää. Alussa mainitut ongelmat pysyvät edelleen. Muut menetelmät (mm. moniulotteiset histogrammit ja dynamic sampling) eivät ole myöskään täydellisiä, eivätkä kata kaikkea oppivan optimoijan toiminnallisuutta Helpottaa koodaajan & DBA:n työtä tämäkin... jos toimii hyvin ja luotettavasti. 41

42 Tulevaisuus? (jatkoa...) Onko oppiva optimoija ns. hopealuoti? There is no such thing as free lunch Automatiikasta seuraa lisäkuormaa Automatiikka ei ehkä aina toimi, jolloin suorituskyky voi huonontua tai kaikkia ongelmatapauksia ei havaita Ei korjaa huonoa taulusuunnittelua (osan kyllä, mutta ei kaikkia tapauksia) Ei ole älykäs: Ei ymmärrä huonoa SQL:ää Käyttäjä, joka pyytää karteesisen liitoksen, saa karteesisen liitoksen Monimutkainen toteuttaa... buginen? Optimaalinen staattisesti optimoitu suoritussuunnitelma on silti tehokkain 42

43 Yhteenveto Kustannusperustaisessa optimoinnissa on useita ongelmia, kuten korrelaatio, oletukset ja tilastojen epätarkkuus, joiden takia optimoija ei pysty aina valitsemaan optimaalista suoritussuunnitelmaa. Yksi tapa ratkaista nämä ongelmat on seurata kyselyn suoritusta ja oppia siten tehdyistä virheistä. Oppiminen voi tapahtua staattisesti, jolloin havainnot kirjataan tietohakemistoon. Suoritussuunnitelmaa voidaan myös muuttaa dynaamisesti ajon aikana, jolloin voidaan reagoida välittömästi tehtyihin arviointivirheisiin. 43

44 Kiitos Riku Räsänen Kantamestarit OY 44

45 Lähteet 1. Babu S., Bizarro P. ja DeWitt D., Proactive re-optimization. Proceedings of the 2005 ACM SIGMOD International Conference on Management of Data, 2005, sivut Christodoulakis S., "Implications of certain assumptions in database performance evaluation". ACM Transactions on Database Systems, Volume 9, Issue 2 (1984), sivut Ioannidis Y. E. ja Christodoulakis S., "On the propagation of errors in the size of join results". ACM SIGMOD Record, Proceedings of the 1991 ACM SIGMOD International Conference on Management of Data, osa 20, 1991, sivut Markl V., Raman V., Simmen D., Lohman G., Pirahesh H. ja Cilimdzic M., Robust query processing through progressive optimization. Proceedings of the 2004 ACM SIGMOD International Conference on Management of Data, 2004, sivut Stillger M., Lohman G., Markl V. ja Kandil M., "LEO - DB2's LEarning Optimizer." VLDB 2001, Proceedings of 27th International Conference on Very Large Data Bases, 2001, sivut

46 Lähteet (jatkoa...) 6. Yu C., Lilien L., Guh K., Templeton M., Brill D. ja Chen A., "Adaptive techniques for distributed query optimization." Proceedings of the Second International Conference on Data Engineering, Los Angeles, CA, 1986, sivut Kabra N. ja DeWitt D. J., Efficient mid-query re-optimization of suboptimal query execution plans. Proceedings of the 1998 ACM SIGMOD International Conference on Management of Data, 1998, sivut Zhu Q., Dunkel B., Soparkar N., Chen S., Schiefer B. ja Lai T., A piggyback method to collect statistics for query optimization in database management systems. Proceedings of the 1998 Conference of the Centre for Advanced Studies on Collaborative Research, 1998, sivu Avnur R. ja Hellerstein J. M., "Eddies: continuously adaptive query processing." Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data, 2000, sivut

47 Lähteet (jatkoa...) 10. Oracle Database Reference 10g Release 1 (10.1) 11. Oracle Database Performance Tuning Guide 10g Release 1 (10.1) 12. Metalink note : Predicate Selectivity 13. Metalink note : Effect of Number of tables on Join Order Permutations 14. Metalink note : Limitations of the Oracle Cost Based Optimizer 47

Helsingin yliopisto/tktl Kyselykielet, s 2006 Optimointi Harri Laine 1. Kyselyn optimointi. Kyselyn optimointi

Helsingin yliopisto/tktl Kyselykielet, s 2006 Optimointi Harri Laine 1. Kyselyn optimointi. Kyselyn optimointi Miksi optimoidaan Relaatiotietokannan kyselyt esitetään käytännössä SQLkielellä. Kieli määrittää halutun tuloksen, ei sitä miten tulos muodostetaan (deklaratiivinen kyselykieli) Tietokannan käsittelyoperaatiot

Lisätiedot

D B. Kyselypuut ja ekvivalenssi

D B. Kyselypuut ja ekvivalenssi Kyselypuut ja ekvivalenssi Sisäisessä esityksessä kyselyt esitetään kyselypuuna lehdissä taulut juuressa lopputulos välisolmuina suoritettavat operaatiot s=select p=project j=join p (teos.nimi, kirjanro)

Lisätiedot

HELIA 1 (15) Outi Virkki Tiedonhallinta

HELIA 1 (15) Outi Virkki Tiedonhallinta HELIA 1 (15) Luento Suorituskyvyn optimointi... 2 Tiedonhallintajärjestelmän rakenne... 3 Suunnittele... 4 SQL-komentojen viritys... 5 Tekninen ympäristö... 6 Fyysisen tason ratkaisut... 7 Indeksit...

Lisätiedot

Kyselyiden optimointi

Kyselyiden optimointi Kyselyiden optimointi R & G Chapter 12 15 16.02.06 Tietokannan hallinta, kevät 2006, Jan 1 Kyselypuut ja ekvivalenssi Sisäisessä esityksessä kyselyt esitetään kyselypuuna lehdissä taulut juuressa lopputulos

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 10 TU00AA48-2002 TU10S1E Hannu Markkanen 14.-15.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 SQL: Monen taulun kyselyt

Lisätiedot

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien Monen taulun kyselyt FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: SELECT FROM Tuloksena on taululistassa lueteltujen taulujen rivien karteesinen

Lisätiedot

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta 1. Johdanto (käsitteitä) 2. Tietokannan talletusrakenteet 3. Tietokannan hakemistorakenteet 4. Kyselyiden käsittely ja optimointi

Lisätiedot

Kyselypuut ja ekvivalenssi. Kyselyiden optimointi. Kyselypuut ja ekvivalenssi. Kyselypuut ja ekvivalenssi. R & G Chapter 12-15

Kyselypuut ja ekvivalenssi. Kyselyiden optimointi. Kyselypuut ja ekvivalenssi. Kyselypuut ja ekvivalenssi. R & G Chapter 12-15 Kyselypuut ja ekvivalenssi Kyselyiden optimointi R & G Chapter 12-15 Sisäisessä esityksessä kyselyt esitetään kyselypuuna lehdissä taulut juuressa lopputulos välisolmuina suoritettavat operaatiot select

Lisätiedot

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

OUTER JOIN se vanha kunnon kaveri

OUTER JOIN se vanha kunnon kaveri OUTER JOIN se vanha kunnon kaveri Ulkoliitoksia on kolmenlaisia Left -> vasemmasta taulusta otetaan ehdot täyttävät rivit ja yhdistetään oikeanpuoleiseen tauluun jos rivi löytyy - nested loop join Right

Lisätiedot

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) HAAGA-HELIA ICT1TA006: Ohjelmointi 1 /5 Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) (Lähteet: Oracle java jdbc Tutorial, Arvo Lipitsäinen: Tietokannan käsittely JDBC:n

Lisätiedot

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta Tietokannan hallinta - kurssin tavoite Kurssilla opitaan periaatteet fyysisen tietokannan tallennuksesta ja käsittelystä tietokantakyselyiden muuntamisesta fyysisen tietokannan käsittelyoperaatioiksi kyselyn

Lisätiedot

SELECT-lauseen perusmuoto

SELECT-lauseen perusmuoto SQL: Tiedonhaku SELECT-lauseen perusmuoto SELECT FROM WHERE ; määrittää ne sarakkeet, joiden halutaan näkyvän kyselyn vastauksessa sisältää

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 11 TU00AA48-2002 TU10S1E Hannu Markkanen 22.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 Indeksit Indeksit Taulun

Lisätiedot

Oraclen syvin ydin. Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija. OUGF syysseminaari 2002 Sivu 1

Oraclen syvin ydin. Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija. OUGF syysseminaari 2002 Sivu 1 Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija OUGF syysseminaari 2002 Sivu 1 Oracle 8i (8.1.7) muistinkäyttöä ja viritystä: SGA ja PGA mitä ne on ja niihin vaikuttavat init.orat SGA:n rakenne Kannan

Lisätiedot

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX SQL - perusteet SQL - yleistä Esa Salmikangas InMics SE Oy versio 16.6.2003 SQL - perusteet 1 SQL - perusteet 2 SQL Structured Query Language SQL on tietokantojen käsittelyyn kehitetty kieli yleisimmät

Lisätiedot

SQL:N PERUSTEET MARKKU SUNI

SQL:N PERUSTEET MARKKU SUNI SQL:N PERUSTEET MARKKU SUNI Relaatiomallisen tietokannan käsittely Tietojen saanti, talletus ja päivitys tapahtuu SQL-kielellä Yhtä operaatiota sanotaan kyselyksi (query) Kyselyjä voidaan laittaa peräkkäin

Lisätiedot

Tietokanta (database)

Tietokanta (database) Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja 1 Tiedosto Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 20.2.2010 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto

Lisätiedot

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu HELIA 1 (16) Luento 3.2 Suorituskyvyn optimointi jatkuu...... 2 Tietojen tallennusratkaisut... 2 Tiedon tallennuksen yksiköitä... 3 Loogiset... 3 Fyysiset... 3 Tallennusmäärittelyt Oraclessa... 5 Loogiset

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä

Lisätiedot

Relaatiomalli ja -tietokanta

Relaatiomalli ja -tietokanta Relaatiomalli ja -tietokanta > Edgar. F. (Ted) Codd, IBM, 1969 < A Relational Model of Data for Large Shared Data Banks Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387. > 70-luvun lopulla

Lisätiedot

Kyselyn yleisrakenne:

Kyselyn yleisrakenne: SQL kysely Kyselyn yleisrakenne: select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] Kysely tuottaa nimettömän

Lisätiedot

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000 HELIA 1 (15) Luento 2.7 Toiminnallisuutta tietokantaan... 2 Deklaratiivinen eheysvalvonta... 2 Proseduraalinen eheysvalvonta... 3 Eheysvalvonnan suunnittelusta... 4 Sääntöjen määrittely... 4 Toteutusvaihtoehdot...

Lisätiedot

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät HAAGA-HELIA Heti-09 1 (12) Näkymät Näkymät... 2 Eri tyyppisiä relaatioita... 2 Taulu - Tallennettu relaatio... 2 Tulosrelaatio - Kyselyn tulos... 2 Näkymä - Virtuaalirelaatio... 2 Näkymien määrittely...

Lisätiedot

SQL - STRUCTURED QUERY LANGUAGE

SQL - STRUCTURED QUERY LANGUAGE SQL Peruskomentoja SQL - STRUCTURED QUERY LANGUAGE SQL on tietokantojen käsittelyyn kehitetty kieli Esimerkkejä kielellä hoidettavistaa toiminnoista: Tietokannan rakenteen määrittely ja muuttaminen Kyselyt

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely Harjoitustehtävä 1 Puutarha Puutarhatunnus omistaja sijainti Vastuualue puutarhatunnus aluenumero maaperä, kosteus valaistus sijainti vastuutonttu Tonttu Tonttutunnus Istutus istutuspäivä paikka_alueella

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 8 XX00AA79-3013 TU12S2 Pasi Ranne 25.9.2013 25/9/13 Helsinki Metropolia University of Applied Sciences 1 Harjoitustyö Harjoitustöiden tilanne

Lisätiedot

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja mikä tahansa tietokokoelma? --> erityispiirteitä Tietokanta vs. tiedosto 1

Lisätiedot

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)] Tällä viikolla Kertaus SQL-asioista jatketaan SQL-tekstifuntio-harjoituksia tehdään pelifirman tietokannasta ER-malli MySQL:llä, tarkastellaan mallin toimivuutta ja korjataan, jos korjattavaa löytyy, tehdään

Lisätiedot

17 BUDJETOINTI. Asiakaskohtainen Budjetti. 17.1 Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust. 17.1.1 Yleistä

17 BUDJETOINTI. Asiakaskohtainen Budjetti. 17.1 Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust. 17.1.1 Yleistä 17 Asiakaskohtainen Budjetti 17.1 Ylläpito-ohjelma 17.1.1 Yleistä BudgCust Ohjelmalla avataan järjestelmään asiakaskohtaisia budjetteja, jotka annetaan kuukausitasolla (oletus). 17.1.2 Parametrit Ohjelmaa

Lisätiedot

D B. Tietokannan hallinta kertaus

D B. Tietokannan hallinta kertaus TKHJ:n pääkomponentit metadata TKHJ:ssä Tiedostojen käsittely puskurien rooli tiedostokäsittelyssä levymuistin rakenne ja käsittely mistä tekijöistä hakuaika muodostuu jonotus jos useita samanaikaisia

Lisätiedot

HELIA 1 (11) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (11) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (11) Access 1 ACCESS...2 Yleistä...2 Access-tietokanta...3 Perusobjektit...3 Taulu...5 Kysely...7 Lomake...9 Raportti...10 Makro...11 Moduli...11 HELIA 2 (11) ACCESS Yleistä Relaatiotietokantatyyppinen

Lisätiedot

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto Harri Laine Helsingin yliopisto Suosion syy? Yksinkertaisuus vähän käsitteitä helppo hahmottaa Selkeä matemaattinen perusta ei tulkintaongelmia kuten esim. UML:ssä teoria käytäntö kaavio: R(A 1 :D 1, A

Lisätiedot

HELIA TIKO-05 1 ( 12) ICT03D Tieto ja tiedon varastointi Martti Laiho 15.11.2005

HELIA TIKO-05 1 ( 12) ICT03D Tieto ja tiedon varastointi Martti Laiho 15.11.2005 HELIA TIKO-05 1 ( 12) Suorituskyky DBMS-järjestelmien keskeisiä laatuvaatimuksia ovat Tiedon luotettavuus (kattaen seuraavat: tietoturva, tiedon eheys, tiedon säilyvyys) Tiedon saatavuus (kattaen myös

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Näkymät... 2 Relaatiotyypit... 2 Taulu - Tallennettu relaatio... 3 Näkymä - Virtuaalirelaatio... 3 Tulosrelaatio - Kyselyn tulos... 3 Otetaulut - Tauluun tallennettu kyselyn tulos...

Lisätiedot

D B. Kyselyjen käsittely ja optimointi. Kyselyn käsittelyn vaiheet:

D B. Kyselyjen käsittely ja optimointi. Kyselyn käsittelyn vaiheet: Kyselyjen käsittely ja optimointi Kyselyn käsittelyn vaiheet: TKHJ ottaa vastaan kyselyn asiakasohjelmalta Kysely selataan ja jäsennetään tarkistetaan kyselyn rakenteellinen oikeellisuus Jäsennetty kysely

Lisätiedot

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI SQL - KIELI TIETOJEN MUOKKAUS MARKKU SUNI Tarkastellaan tauluissa olevien tietojen muokkausta muokkauskäskyjä: INSERT UPDATE DELETE Kysymys kuuluu: Voiko tietoja muokata

Lisätiedot

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3

Lisätiedot

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto Tietokanta Tiedosto Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään

Lisätiedot

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu HELIA 1 (13) Luento 2.9 Tietohakemistot 2 2 Coddin 12 säännöstä RDBMS:lle... 3 Oraclen tietohakemistonäkymät (osa) 4 Yleiset 4 Taulut 4 Säännöt 4 Näkymät 4 Synonyymit 5 Talletetut rutiinit 5 Käyttöoikeudet

Lisätiedot

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

Tiedonhallintajärjestelmän rakenne ja Suorituskyky HELIA TIKO-05 1 (20) Tiedonhallintajärjestelmän rakenne ja Suorituskyky Tiedonhallintajärjestelmän rakenne... 2 SQL-käsittelijä... 3 Parsinta (Parser)... 3 Optimointi (Optimizer)... 3 Tilan käsittelijä...

Lisätiedot

HAAGA-HELIA Heti-09 1 (17) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Suorituskyky

HAAGA-HELIA Heti-09 1 (17) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Suorituskyky HAAGA-HELIA Heti-09 1 (17) Suorituskyky Suorituskyky... 2 Suorituskyvyn mittareita... 2 Tekninen ympäristö... 3 Suorituskyvyn optimointi... 4 Optimoinnin kohteet... 5 Fyysisen tason ratkaisut... 6 Indeksointi...

Lisätiedot

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet, syksy 2006 Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen

Lisätiedot

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT Agenda Regular Expression - funktiot Case-insensitive Sort Case-insensitive Seach Merge muutokset Tree-walking in 10g DML Returning Values

Lisätiedot

DXL Library ja DXL-kielen olemus. Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/

DXL Library ja DXL-kielen olemus. Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/ DXL Library ja DXL-kielen olemus Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/ DOORS extension Language DXL on DOORSin laajennuskieli, jolla voidaan kehittää lisätoiminnallisuutta.

Lisätiedot

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, 3.5.2007, H.Laine Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, oma nimesi, syntymäaikasi ja nimikirjoituksesi

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 22.3.2016 CSE-A1200 Tietokannat 22.3.2016 1 / 35 Oppimistavoitteet: tämän luennon jälkeen Osaat tehdä SQL:llä kyselyitä, jotka käyttävät hyväkseen toisen kyselyn tuloksia (alikyselyt).

Lisätiedot

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Muita tietokantaobjekteja Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Näkymät Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

Lisätiedot

Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen

Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen Hävittäjälentokoneen reitin suunnittelussa käytettävän dynaamisen ja monitavoitteisen verkko-optimointitehtävän ratkaiseminen A*-algoritmilla (valmiin työn esittely) Joonas Haapala 8.6.2015 Ohjaaja: DI

Lisätiedot

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista Helsingin yliopisto Tietojenkäsittelytieteen laitos 26.2.2014 (H.Laine) Tietokantojen perusteet Liitteenä: Tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastausarkkiin kurssin nimi, tenttipäivä,

Lisätiedot

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki HELIA TIKO-05 1 (17) SQL / DML 4 Alikyselyt...2 Joukko-operaatiot...7 Yhdiste, unioni...8 Leikkaus...9 Erotus... 10 Tietokannan datan muokkaus... 11 Lisäys... 11 Yhden rivin lisääminen... 12 Useamman rivin

Lisätiedot

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL FinFamily PostgreSQL 1 Sisällys / Contents FinFamily PostgreSQL... 1 1. Asenna PostgreSQL tietokanta / Install PostgreSQL database... 3 1.1. PostgreSQL tietokannasta / About the PostgreSQL database...

Lisätiedot

SQL-KYSELYJEN OPTIMOINNISTA. Niko Jalkanen 17.4.2007. Joensuun yliopisto Tietojenkäsittelytiede Pro gradu tutkielma

SQL-KYSELYJEN OPTIMOINNISTA. Niko Jalkanen 17.4.2007. Joensuun yliopisto Tietojenkäsittelytiede Pro gradu tutkielma SQL-KYSELYJEN OPTIMOINNISTA Niko Jalkanen 17.4.2007 Joensuun yliopisto Tietojenkäsittelytiede Pro gradu tutkielma TIIVISTELMÄ SQL tarjoaa korkean tason deklaratiivisen rajapinnan relaatiotietokannan tietoihin.

Lisätiedot

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 29.2.2012 (vastauksia) Liitteenä on tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastauspaperiin kurssin

Lisätiedot

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opintojaksolla: keskitytään relaatiotietokantojen teoriaan ja toimintaan SQL-kieli kyselykielenä

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 23.2.2016 CSE-A1200 Tietokannat 23.2.2016 1 / 36 Oppimistavoitteet: tämän luennon jälkeen Tunnet SQL:n perusteet ja osaat tehdä yksinkertaisia SQL-kyselyitä, esimerkiksi hakea relaatiosta

Lisätiedot

FYYSINEN SUUNNITTELU

FYYSINEN SUUNNITTELU IIO30120 DATABASE DESIGN / TIETOKANTOJEN SUUNNITTELU JA IIO30220 DATABASE MANAGEMENT / TIETOKANNAN HALLINTA FYYSINEN SUUNNITTELU KIRJAN HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI,

Lisätiedot

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO NÄKYMÄT Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja Tietokantojen hakemistorakenteet Hakemistorakenteiden (indeksien) tarkoituksena on nopeuttaa tietojen hakua tietokannasta. Hakemisto voi olla ylimääräinen oheishakemisto (secondary index), esimerkiksi

Lisätiedot

Johdatus matematiikkaan

Johdatus matematiikkaan Johdatus matematiikkaan Luento 5 Mikko Salo 5.9.2017 The natural development of this work soon led the geometers in their studies to embrace imaginary as well as real values of the variable.... It came

Lisätiedot

Liitokset - haut useaan tauluun

Liitokset - haut useaan tauluun Liitokset Liitokset - haut useaan tauluun Tavallisin liitos on valintaliitos ehtona =,!=, yhtäläisyysliitos (=) yleisin (vrt. Inner join) taulut liitetään toisiinsa yleensä avaimilla (perus-

Lisätiedot

TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO

TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO JOUNI HUOTARI 2005-2010 OLAP-OHJETEKSTIT KOPIOITU MICROSOFTIN OHJATUN OLAP-KUUTION TEKO-OHJEESTA ESIMERKIN KUVAUS JA OLAP-MÄÄRITELMÄ

Lisätiedot

HELIA TIKO-05 1 (15) ICT03D Tieto ja tiedon varastointi Räty, Virkki 25.10.2006

HELIA TIKO-05 1 (15) ICT03D Tieto ja tiedon varastointi Räty, Virkki 25.10.2006 HELIA TIKO-05 1 (15) SQL / DML 3 Liitos...2 SQL-92:n join operaatio...4 SQL-89:n join operaatio:...5 Karteesinen tulo... 10 Ulkoliitos (Outer join)... 11 Vasemmanpuoleinen ulkoliitos... 12 Oikeanpuoleinen

Lisätiedot

ALGORITMIT & OPPIMINEN

ALGORITMIT & OPPIMINEN ALGORITMIT & OPPIMINEN Mitä voidaan automatisoida? Mikko Koivisto Avoimet aineistot tulevat Tekijä: Lauri Vanhala yhdistä, kuvita, selitä, ennusta! Tekijä: Logica Mitä voidaan automatisoida? Algoritmi

Lisätiedot

SYÖTTÖPOHJA LUKUJEN SYÖTTÖÖN ERI TARKOITUKSIIN

SYÖTTÖPOHJA LUKUJEN SYÖTTÖÖN ERI TARKOITUKSIIN SYÖTTÖPOHJA LUKUJEN SYÖTTÖÖN ERI TARKOITUKSIIN Usein tarvitaan käyttäjän käsin syöttämiä lukuja eri tarkoituksiin. Tällaisia ovat mm. budjetti-, ennuste-, tavoite- ym. luvut. Lukuja syötetään eri kohteille,

Lisätiedot

Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta. Esimerkin kuvaus ja OLAP-määritelmä

Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta. Esimerkin kuvaus ja OLAP-määritelmä OLAP-kuution teko Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta Esimerkin kuvaus ja OLAP-määritelmä Tavoitteena on luoda OLAP-kuutio Northwind-tietokannan tilaustiedoista

Lisätiedot

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Esimerkkejä polynomisista ja ei-polynomisista ongelmista Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia

Lisätiedot

Monitavoiteoptimointi

Monitavoiteoptimointi Monitavoiteoptimointi Useita erilaisia tavoitteita, eli useita objektifunktioita Tavoitteet yleensä ristiriitaisia ja yhteismitattomia Optimaalisuus tarkoittaa yleensä eri asiaa kuin yksitavoitteisessa

Lisätiedot

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta AVL-puut eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta pohjana jo esitetyt binäärihakupuiden operaatiot tasapainotus vie pahimmillaan lisäajan lisäys- ja

Lisätiedot

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Tietorakenteet, laskuharjoitus 7, ratkaisuja Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9

Lisätiedot

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu HELIA 1 (21) Luento 3.1 Suorituskyvyn optimointi... 2 Suunnittele... 3 Tiedonhallintajärjestelmän rakenne... 4 SQL-käsittelijä... 5 Parsinta... 5 Optimointi... 5 Tilan käsittelijä... 5 Puskurin käsittelijä

Lisätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

Luku 8. Aluekyselyt. 8.1 Summataulukko Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa

Lisätiedot

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012)

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012) IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012) TEHTÄVIÄ/KYSYMYKSIÄ Määrittele tapahtuma (transaction) tapahtumien hallinta Mitä ovat tapahtuman ACIDominaisuudet?

Lisätiedot

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia Tällä viikolla Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia 1.) Mainitse tietokonepelistä (kuvitteellisesta tai todellisesta) esimerkkitilanteita,

Lisätiedot

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI Tavoite: Suunnitella käyttäjien tarvitsemat turvallisuusmekanismit ja säännöt. Toisin sanoen: tehdä tietokannasta turvallinen ja luotettava. Muistutus: Tietokanta

Lisätiedot

Tietokantakurssit / TKTL

Tietokantakurssit / TKTL Tietokantakurssit / TKTL Tietokantojen perusteet - tietokannan käyttö: SQL, sovellukset Tietokannan hallinta - tietokannanhallintajärjestelmän ominaisuuksia: tallennusrakenteet kyselyjen toteutus tapahtumien

Lisätiedot

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

Lisätiedot

Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot

Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot Sievin lukio Tehtävien ratkaisut tulee olla esim. Libre officen -writer ohjelmalla tehtyjä. Liitä vastauksiisi kuvia GeoGebrasta ja esim. TI-nSpire

Lisätiedot

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus Yhdiste, leikkaus, erotus ym. SQL tarjoaa myös relaatioalgebran operaatiot yhdiste, leikkaus, erotus Näissä operaatioissa taulujen on oltava samarakenteisia, ts. niissä on oltava samantyyppiset vastinsarakkeet.

Lisätiedot

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot) SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos 1 Insert lauseella on kaksi muotoa: insert

Lisätiedot

4. Kyselyjen käsittely ja optimointi

4. Kyselyjen käsittely ja optimointi Tietokannan hallinta 1 4. Kyselyjen käsittely ja optimointi Tietokannan hallinta 2 4. Kyselyjen käsittely ja optimointi 4. Kyselyjen käsittely ja optimointi (E&N, Ch. 18) - taustana mm. relaatioalgebra

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Choose Finland-Helsinki Valitse Finland-Helsinki

Choose Finland-Helsinki Valitse Finland-Helsinki Write down the Temporary Application ID. If you do not manage to complete the form you can continue where you stopped with this ID no. Muista Temporary Application ID. Jos et onnistu täyttää lomake loppuun

Lisätiedot

Power BI 29.5.2015. Tech Conference 28.-29.5.2015. Power BI. Pekka.Korhonen@sovelto.fi. #TechConfFI. Johdanto

Power BI 29.5.2015. Tech Conference 28.-29.5.2015. Power BI. Pekka.Korhonen@sovelto.fi. #TechConfFI. Johdanto Tech Conference 28.-29.5.2015 Power BI Pekka.Korhonen@sovelto.fi #TechConfFI Johdanto 2 1 Microsoft BI komponentit Azure Machine Learning Stream Analytics HDInsight DocumentDB Blob/table storage VM SQL

Lisätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu 811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,

Lisätiedot

4 Tehokkuus ja algoritmien suunnittelu

4 Tehokkuus ja algoritmien suunnittelu TIE-20100 Tietorakenteet ja algoritmit 52 4 Tehokkuus ja algoritmien suunnittelu Tässä luvussa pohditaan tehokkuuden käsitettä ja esitellään kurssilla käytetty kertaluokkanotaatio, jolla kuvataan algoritmin

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava

Lisätiedot

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 HOJ Haja-aiheita Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

Access-kyselyt. Luetteloinnin kehittämispäivä 13.12.2012 Mia Kujala

Access-kyselyt. Luetteloinnin kehittämispäivä 13.12.2012 Mia Kujala Access-kyselyt Luetteloinnin kehittämispäivä 13.12.2012 Mia Kujala Ennen kuin aloitat MS Access on asennettu Oracle ODBC-ajuri on asennettu C:\Voyager\Access Reports\Reports.mdb > Voyager-taulut on linkitetty

Lisätiedot

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa Tietojen tallennusrakenteet Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa tiedot tiedostoon kuuluvista lohkoista esim. taulukkona, joka voi muodostua ketjutetuista

Lisätiedot

Asiointipalvelun ohje

Asiointipalvelun ohje Asiointipalvelun ohje Yleistä 1. Kirjautuminen 2. Yhteystiedot 3. Vastaustavan valinta 1. Yleistä 2. Palkkatietojen lataaminen tiedostosta 4. Lomake 1. Yleistä 2. Linkit ja vastaajan tiedot 3. Lomakekäsittely

Lisätiedot

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Jouni Huotari Martti Laiho (materiaali on osa virtuaaliammattikorkeakoulun Tietokantaosaaja-opintokokonaisuutta) opintokokonaisuutta)

Lisätiedot

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0. Vapaus Määritelmä Oletetaan, että v 1, v 2,..., v k R n, missä n {1, 2,... }. Vektorijono ( v 1, v 2,..., v k ) on vapaa eli lineaarisesti riippumaton, jos seuraava ehto pätee: jos c 1 v 1 + c 2 v 2 +

Lisätiedot