Tietokantarakenteet ja -algoritmit Harjoitukset 1-12

Koko: px
Aloita esitys sivulta:

Download "Tietokantarakenteet ja -algoritmit Harjoitukset 1-12"

Transkriptio

1 Tietokantarakenteet ja -algoritmit Harjoitukset 1-12 Malliratkaisut 1 Harjoitus 1 1. Kukin DEPARTMENT-monikko d sijoitetaan omalle sivulleen. Sen seuraksi samalle sivulle sijoitetaan tähän liittyviä EMPLOYEE-monikoita niin monta kuin mahtuu. Loput d:hen liittyvät EMPLOYEE-monikot sijoitetaan sivuille, jotka ketjutetaan d:stä alkavaan ketjuun. Kustakin EMPLOYEE-monikosta e tallennetaan omaan tietueeseen kaikki muut attribuutit paitsi DeptNr, jonka arvo on tarpeen tallentaa vain kerran sivua kohti. Vrt. Oraclen cluster- rakenne. Uuden EMPLOYEE-monikon e lisäys: Kontataan lukusalpoja varaten osastonumeron n = e.deptnr hakupolku relaation DEPART- MENT hakemistossa sille sivulle q, joka sisältää DeptNr-attribuutin arvolla n varustettuun DEPARTMENT-monikkoon d osoittavan hakemistotietueen (n,r). Eristetään monikkotunnisteesta r sivunumero p ja tietuepaikan indeksi i. Naulitaan ja kirjoitussalvataan sivu p. Vapautetaan hakemistosivun q salpaus ja naulinta. Jos sivulla p on tilaa monikolle e, lisätään e sivulle p. Muutoin kontataan sivulta p lähtevä ketju kirjoitussalpoja varaten, kunnes päästään sivulle, jossa on tilaa monikolle e. Mikäli millään ketjun sivulla ei ole tilaa e:lle, varataan uusi sivu, joka linkitetään edellisten jatkoksi. Sivua varattaessa täytyy kirjoitussalvata myös varauskuvaajasivu. Viimeisetkin salvat ja naulinnat vapautetaan lisäysoperaation päätteeksi. 2. Lasketaan monikon (x,v) sisäisen esityksen pituus. Naulitaan ja lukusalvataan varauskuvaajasivu s. Valitaan sivu p, jossa on tilaa monikolle (x,v). Jos sellaista ei ole, valitaan sivu p, jossa mahdollisesti on tilaa monikolle (x,v). Naulitaan ja kirjoitussalvataan p. Sivu p valitaan monikon sijoituspaikaksi, jos siellä on tilaa sille. Muutoin vapautetaan p:n salpaus ja naulinta ja kokeillaan toista mahdollista sivua. Mikäli monikko (x,v) mahtuu sivulle p, toimitaan seuraavastio. Mikäli sivun p tilanvarausluokka (0,1,2) muuttuu monikon (x,v) lisäyksestä korkeammaksi eli täydemmäksi (1,2,3), vapautetaan s:n salpaus ja naulinta, ja naulitaan ja kirjoitussalvataan s, muutetaan s:ssä p:n varausluokka ja (tehokkuussyistä) vapautetaan s:n salpaus ja naulinta jo tässä vaiheessa. Lisätään monikko (x,v) sivulle p ja vapautetaan p:n salpaus ja naulinta. Mikäli halutaan varmistaa, että varausluokkamerkinnät ovat s:ssä aina oikein, täytyy s pitää salvattuna lisäysoperaation loppuun asti. Tarkemmassa vapaan tilan kirjauksessa varauskuvaajan alkio vie vähintään 10 bittiä, jolla voidaan osoittaa 1024 sanaa eli 4KB:n sivun vapaa tila sanoissa. Etuna on tarkka tieto. Haittana on varauskuvaajan suurempi koko ja (mikä 1

2 vielä pahempaa) ainainen tarve päivittää varauskuvaajaa, ja siis kirjoitusalvata asianomainen varauskuvaajasivu s, mikä estää muita samanaikaisia prosesseja tutkimasta s:ää. Tästä syystä tarkan varaustiedon kirjaus ei ole käytännöllistä. 3. Transaktio on oikeellinen, sillä transaktion sitoutumispisteessä viite-eheysrajoitteetkin ovat voimassa. Avainrajoitteet pysyvät voimassa transaktion sisälläkin. Avainrajoitteiden valvontaa varten täytyy monikon lisäyksen edelle tuottaa lukuoperaatio, jolla yritetään lukea relaatiosta lisättävän monikon avaimella varustettu tietue. Viite-eheysrajoitteiden valvontaa varten täytyy transaktion loppuun (juuri ennen commit-operaatiota) sijoittaa lukuoperaatiot, joilla luetaan viitatusta relaatiosta lisätyn monikon viiteavaimen arvolla varustettu monikko. Tietääkseni kaikissa järjestelmissä ei ole mahdollista toteuttaa viite-eheysrajoitteiden tällaista viivästettyä valvontaa. Silloin on sovellusohjelmoijan huolehdittava siitä, että viite-eheysrajoite pudotetaan transaktion aluksi tilapäisesti pois ja asetetaan takaisin transaktion lopuksi (mikä laukaisee valvontaoperaation). 4. a) R[x 1, >, v 1 ] R[x 2, > x 1, v 2 ]...R[x n, > x n 1, v n ]C. b) R[x 1, > y, v 1 ] D[x 1, v 1 ]I[x 1, v 1 +1] R[x 2, > x 1, v 2 ] D[x 2, v 2 ]I[x 2, v 2 +1]...R[x n, > x n 1, v n ] D[x n, v n ]I[x n, v n + 1]C. c) R[x 1, > y, v 1 ]D[x 1, v 1 ]I[x 1, v 1 +1] R[x 2, > x 1, v 2 ]D[x 2, v 2 ]I[x 2, v 2 +1]...R[x n, > x n 1, v n ] D[x n, v n ]I[x n, v n +1] AD[x n, v n +1]I[x n, v n ]...D[x 2, v 2 +1]I[x 2, v 2 ]D[x 2, v 2 + 1]I[x 2, v 2 ]C. 5. Transaktiomallin laajennos: Uusia operaatioita, jotka voivat esiintyä transaktion etenemisvaiheessa: S[P]: asettaa peruutuspisteen P. G[P]: aloittaa peruutuksen peruutuspisteeseen P. C[P]: kirjaa osittaisperuutuksen P:hen päättyneeksi. Etenemisvaihe voi koostua yhdestä tai useammasta peräkkäisestä, muotoa ops 1 S[P] ops 2 G[P] undo(ops 2 ) C[P] ops 3 olevasta osajonosta, missä ops 1, ops 2 ja ops 3 ovat operaatiojonoja (näiden tarkan syntaksin jätän tässä sanomatta). Jono undo(ops 2 ) on (kuten luennoilla) jonon ops 2 peruutusjono, so. jonon W-operaatioiden käänteisoperaatioiden jono käänteisessä järjestyksessä. Em. jono on siis ekvivalentti jonon ops 1 ops 3 kanssa. Esimerkiksi transaktio BW [x 1, u 1, v 1 ] S[P 1 ] W [x 2, u 2, v 2 ] S[P 2 ] W [x 3, u 3, v 3 ] S[P 3 ] W [x 4, u 4, v 4 ] G[P 2 ] W [x 4, v 4, u 4 ] W [x 3, v 3, u 3 ] C[P 2 ] W [x 5, u 5, v 5 ] G[P 1 ] W [x 5, v 5, u 5 ] W [x 2, v 2, u 2 ] C[P 1 ] W [x 6, u 6, v 6 ] C on sitoutunut ja ekvivalentti transaktion BW [x 1, u 1, v 1 ]W [x 6, u 6, v 6 ]C kanssa. Transaktio 2

3 BW [x 1, u 1, v 1 ]S[P 1 ]W [x 2, u 2, v 2 ]G[P 1 ] W [x 2, v 2, u 2 ] C[P 1 ] W [x 3, u 3, v 3 ] AW [x 3, v 3, u 3 ] W [x 1, v 1, u 1 ]C. on peruuntunut ja luonnollisesti ekvivalentti transaktion BC kanssa. 2 Harjoitus 2 1. P i = puskurin i:s käytettävissä oleva sivu, R i = R:n i:s sivu, S i S:n i:s sivu LRU: P1 P2 P3 levyhakuja R1 S1 S2 3 S3 S4 2 S S2 S1 R2 3 S4 S3 2 S R3 S1 S2 3 S3 S4 2 S S2 S1 R4 3 S4 S3 2 S R5 S1 S2 3 S3 S4 2 S MRU: P1 P2 P3 levyhakuja R1 S1 S2 3 S3 1 S4 1 S5 1 3

4 R2 S2 2 S3 1 S R3 S1 2 S2 1 S3 1 S R4 S1 2 S2 1 S4 1 S R5 S1 2 S3 1 S4 1 S (algoritmin for jokainen S:n sivu toteutettu niin, että sivut käydään vuorotellen läpi alusta loppuun ja lopusta alkuun) MRU2: P1 P2 P3 levyhakuja R1 S1 S2 3 S3 1 S4 1 S R2 S4 2 S3 1 S R3 S3 2 S4 1 S R4 S2 2 S3 1 4

5 S R5 S3 2 S2 1 S Etu: loki on hyvin tiivis; isostakin operaatiosta vain yksi pieni lokitietue. Haitat, jotka tekevät tälläisen lokin käytön mahdottomaksi: operaation fysiologinen toisto mahdotonta; peruutusvaiheessa järjestelmä ei pysty määrittelemään edes operaation loogista käänteisoperaatiota. Huomaa, että sama SQL-operaatio voi käynnistää eri suorituskerroilla aivan erilaisen operaatiosarjan esim. tietokantaan tallennettujen herättimien vaikutuksesta. Tietokantasovelluksen suunnittelijan pitäisi itse määritellä tarkasti transaktion jokaiselle SQL-operaatiolle sitä vastaava toisto- ja peruutusoperaatio. 3. Peruutuspisteen P asetus transaktiossa T kirjataan < T, S, P, n >, missä n = LastLSN(T). Osittaisperuutuksen aloitus G[P] kirjataan < T, G, P >. Osittaisperuutuksessa peruutettava päivitysoperaatio kirjataan redo-only-kirjauksella < T, undo(w ), p, i,w, x, u, n >, kun W:n kirjaus on T, W, p, i, W, x, u, v, n. Siis täsmälleen kuten keskeytyneen transaktion peruutusvaiheen käänteisoperaatio. Osittaisperuutuksen päättyminen C[P] kirjataan < T, C, P >, siis keskeytyneen transaktion peruutuksen päättämistä vastaavasti, mutta kuitenkaan pakottamatta lokia levylle. Välittömästi osittaisperuutuksen päättymisen jälkeen suoritettu T:n etenemisvaiheen päivitys W[x,u,v] kirjataan normaalilla redo-undo-kirjauksella < T, W, p, i, x, u, v, n >, missä LastLSN n on peruutuspisteen aloituskirjauksen LSN. Esimerkkitransaktion tuottamat lokikirjaukset: 101: < T, B > 102: <T, W, p 1, i 1, x 1, u 1, v 1, LastLSN=101> 103: <T, S, P, LastLSN=102> 104: <T, W, p 2, i 2, W, x 2, u 2, v 2, LastLSN=103> 105: <T, G, P> 106: <T, undo(w), p 2, i 2, x 2, u 2, UndoNextLSN=103> 107: <T, C, P> 108: <T, W, p 3, i 3, u 3, v 3, LastLSN=103> 109: <T, A> 5

6 110: <T, undo(w), p 3, i 3, x 3, u 3, UndoNextLSN=103> 111: <T, undo(w), p 1, i 1, x 1, u 1, UndoNextLSN=101> 112: <T, C> Tehtävän tarkoituksena oli osoittaa, että osittaisperuutuksien toteuttamiselle oikeastaan oli jo koneisto valmiina. 4. Idempotenttisuudesta on se etu, ettei elvytyksessä ole tarpeen tarkistaa sivun tilaa, ts. onko toistettava tai peruutettava päivitys jo sivulla vai ei. Arvoperustaiseen eli fyysiseen lokiin perustuvat toistot ja peruutukset ovat idempotentteja. Looginen toisto ja peruutus eivät ole lainkaan idempotentteja. Fysiologinen toisto tai peruutus saadaan idempotentiksi, jos operaatioon liitetään ehdoksi PageLSN:n tutkiminen, ts. toisto suoritetaan vain jos lokikirjauksen LSN > PageLSN, ja peruutus vain jos lokikirjauksen LSN <= PageLSN. 5. Lokitietueen ykkösbitit ilmaisevat, mitkä bitit muuttuivat korvattaessa alkukuva jälkikuvalla. Tietueeseen kohdistuvan operaation toisto toteutetaan suorittamalla tietueen ja lokitietueen välinen xor. Peruutus toteutetaan samoin suorittamalla tietueen ja lokitietueen välinen xor. Operaatiot eivät ole idempotentteja. Toisto toimii vain, jos operaation tulos ei vielä ole tietueessa. Peruutus toimii vain, jos operaation tulos on tietueessa. Huomaa, että kaksi peräkkäistä xor-operaatiota kumoavat toisensa. Menettely vaatii siis rinnalleen PageLSN:n. 6. Älä varasta -käytännössä levylle asti ei koskaan pääse likaista tietoa, joten häiriöstä elvyttäessä ei transaktioiden peruuntusvaiheen käänteisoperaatioita (periaatteessa) tarvitse lainkaan suorittaa. Tämä tosin pätee vain, jos elvytyksen toistovaiheessa jätetään vastaavasti toistamatta aktiivisten transaktioiden päivitykset. Lokikirjauksiin ei silloin tarvitse tallentaa alkukuvaa. Mutta miten hoidetaan transaktion peruuntuminen normaalin transaktionkäsittelyn kuluessa? Puskurisivuille on joka tapauksessa toteutettava käänteisoperaatiot. Päivitysten alkukuvat on siis säilytettävä jossain. Ajatus ei ole hyvä. Pakota-käytäntöä sovellettaessa ei häiriöstä elvyttäessä tarvitse suorittaa lainkaan toisto-operaatioita sitoutuneille tai peruuntuneille transaktioille. Lokikirjauksiin ei siis äkkipäätä ajatellen tarvittaisi jälkikuvaa. Mutta tämä ei pidä paikkaansa, sillä lokikirjaukset menevät WAL-käytännön mukaisesti levylle ennen tietokantasivuja, ja kesken sivujen levylle pakotuksen voi sattua häiriö niin, että levyllä onkin lokikirjaus, jota vastaavaa päivitystä ei ole levyllä. Tkhj ei voi samanaikaisesti noudattaa kumpaakin käytäntöä. Älä varasta ja pakota ovat näet toisensa poissulkevia: jos sivu pakotetaan levylle ennen kuin transaktio sitoutuu, sivu siis varastetaan. 3 Harjoitus 3 1. Analyysivaiheen alussa alustetaan aktiivisten transaktioiden taulu (tyhjä) ja päivitettyjen sivujen taulu (samoin tyhjä) tarkistuspisteestä. Lokin eteenpäin selauksessa saadaan transaktiotaulun sisällöksi 6

7 {(T 1, forward-rolling, LastLSN = 109), (T 2, backward-rolling, UndoNextLSN = 108)} ja päivitettyjen sivujen taulun sisällöksi {(p,reclsn = 107)}, mistä saadaan RedoLSN = 107. Merkitään: wl(p) = fix(p) & write-latch(p); ul(p) = unlatch(p) & unfix(p). Toistovaiheessa selataan lokia kirjauksesta RedoLSN = 107 eteenpäin. Päivityskirjausten kohdalla tehdään seuraavaa: 107: Koska 107 RecLSN(p), wl(p) ja tutkitaan PageLSN(p):tä. Koska PageLSN(p) = , operaation I[x,u] tulos on sivulla. ul(p). RecLSN(p) = = : Koska 108 < RecLSN(p), sivua p ei naulita eikä salvata. 109: Koska 109 RecLSN(p), wl(p) ja tutkitaan PageLSN(p):tä. Koska PageLSN(p) = 108 < 109, operaation I[y,v] tulosta ei ole sivulla. Lisätään monikko (y,v) sivulle p paikkaan j. PageLSN(p):ä 109. ul(p). 110: Koska 110 RecLSN(p), wl(p) ja tutkitaan PageLSN(p):tä. Koska PageLSN(p) == 109 < 110, operaation W[z,w,w ] tulosta ei ole sivulla. Muutetaan sivulla p paikassa k oleva monikko (z,w) monikoksi (z,w ). PageLSN(p) = 110. ul(p). 112: Koska 112 RecLSN(p), wl(p) ja tutkitaan PageLSN(p):tä. Koska PageLSN(p) = 110 < 112, operaation W 1 [z, w, w ] tulosta ei ole sivulla. Palautetaan sivulla p paikassa k oleva monikko (z,w ) monikoksi (z,w). PageLSN(p) = 112. ul(p). Peruutusvaiheessa asetetaan transaktiotaulussa T1:n tilaksi backward-rolling ja Undo- NextLSN:ä LastLSN = 109 ja kirjataan lokiin 113: < T 1, A > Transaktiotaulun UndoNextLSN:ien maksimi on max{109, 108} = 109. Ensimmäiseksi peruutetaan siis LSN:llä 109 kirjattu operaatio. wl(p). Poistetaan paikassa (p,j) oleva monikko (y,v). Kirjataan lokiin 114: < T 1, I 1, p, j, 107 > PageLSN(p) = 114. UndoNextLSN(T1) = 107. ul(p). Transaktiotaulun UndoNextLSN:ien maksimi on max{107, 108} = 108. Peruutetaan siis LSN:llä 108 kirjattu operaatio. wl(p). Poistetaan paikassa (p,k) oleva monikko (z,w). Kirjataan lokiin 115: < T 2, I 1, p, k, 106 > PageLSN(p) = 115. UndoNextLSN(T2) = 106. ul(p). Transaktiotaulun UndoNextLSN:ien maksimi on max{107, 106} = 107. wl(p). Poistetaan paikassa (p,i) oleva monikko (x,u). Kirjataan lokiin 116: < T 1, I 1, p, i, 105 > PageLSN(p) = 116. UndoNextLSN(T1) = 105. ul(p). Transaktiotaulun UndoNextLSN:ien maksimi on max{105, 106} = 106. LSN:llä 106 varustettu kirjaus on T2:n aloituskirjaus. Poistetaan T2 transaktiotaulusta, kirjataan lokiin 117: < T 2, C > 7

8 ja viedään loki levylle. Transaktiotaulun ainoa UndoNextLSN on 105. LSN:llä 105 varustettu kirjaus on T1:n aloituskirjaus. Poistetaan T1 transaktiotaulusta, kirjataan lokiin 118: < T 1, C > ja viedään loki levylle. Koska transaktiotaulu on tyhjä, peruutusvaihe on päättynyt. Lopuksi otetaan tarkistuspiste: 119: <begin-checkpoint> 120: <transaction-table, {}> 121: <page-table, {(p,reclsn = 109)}> 122: <end-checkpoint> 2. a) Sivu p on voitu viedä levylle (ja siis poistaa päivitettyjen sivujen taulusta) viimeisen tarkistuspisteen ottamisen jälkeen, ennen häiriötä. Rekonstruoidussa taulussa voi olla sivuja, jotka eivät taulussa enää olleet häiriötilanteessa, ja jonkin sivun RecLSN voi olla rekonstruoidussa taulussa häiriötilanteessa vallinnutta arvoa pienempi. b) Edellä tehtävässä 1 esiintyy juuri sellainen tilanne. 3. Toistovaihe saattaa tietokannan siihen tilaan, jossa se oli häiriöhetkellä. Näin ollen erikoisesti ne sivut, joilla oli (puskurissa) aktiivisten transaktioiden päivityksiä häiriötilanteessa, ovat toistovaiheen tuloksena puskurissa ja nämä puskurisivut täsmälleen ajan tasalla, so. sisältävät kaikki niille häiriötilanteeseen mennessä tehdyt ja lokin levyllä olevaan osaan ehtineet päivitykset. Siis peruutettavien päivitysten olemassaoloa ei tarvitse tutkia. 4. Fyysinen toisto onnistuu, koska toistovaiheessa operaatiot toistetaan yhdellä lokin eteenpäinselauksella täsmälleen samassa järjestyksessä kuin ne on alkujaan suoritettu. Lopputuloksena ovat fyysisestikin täsmälleen samansisältöiset sivut puskurissa (joskaan eivät välttämättä juuri entisissä puskurikehyksissä). Jos peruutusvaihe edeltää toistovaihetta, ei fyysinen toisto enää aina ole mahdollista. Oletetaan, että häiriön sattuessa lokin sisältönä on: 100: < T 1, B > 101: < T 1, D, p, i, x, u, 100 > 102: < T 2, B > 103: < T 2, I, p, j, y, v, 102 > 104: < T 2, C > Oletetaan, että tässä sivu p on täynnä T2:n lisäysoperaation jälkeen. T2 on siis kuluttanut T1:n poisto-operaation vapauttaman tilan sivulla p. Oletetaan vielä, että T1:n operaation tulos on ehtinyt levylle asti, mutta T2:n ei, ts. PageLSN(p) = 101 sivun p levyversiossa. Häiriöstä elvytyksessä peruutetaan ensin T1. Tämä onnistuu tällä kertaa fyysisesti: 105: < T 1, A > 106: < T 1, D 1, p, i, x, u, 100 > 107: < T 1, C > 8

9 Sitten yritetään toistaa T2. Tämä ei onnistu enää sivulle p, joka on nyt täynnä tietueita. Täytyy varata uusi tyhjä sivu q ja suorittaa toisto sinne. Nyt täytyy lokiin tehdä kirjaus myös toisto-operaatiosta: 108: < T 2, I, q, k, y, v, 102 > ja täytyy toistaa myös sitoutumiskirjaus: 109: < T 2, C > Tämä näyttää jo epäilyttävältä ei varmaan saada toimimaan kunnolla! 5. Kaikissa tapauksissa elvytys aloitetaan uudelleen alusta. a) Analyysivaiheessa ainoastaan luetaan lokia ja alustetaan keskusmuistitietorakenteita (aktiivisten transaktioiden taulu ja päivitettyjen sivujen taulu). Uuden häiriön sattuessa nämä analyysitiedot menetetään, joten pitää aloittaa alusta. b) Toistovaiheessa saatetaan tietokanta (puskurissa) siihen tilaan, jossa se oli häiriöhetkellä. Sivuja tuodaan levyltä ja edistetään niiden tilaa niillä päivityksillä, jotka eivät olleet ehtineet levylle asti. Vaiheen aikana puskurinhallitsin voi viedä näitä sivuja levyllekin. Uuden häiriön sattuessa samat sivut haetaan uudestaan puskuriin. Erona edelliskertaan voi olla, ettei jotain toistettavaa päivitystä tarvitsekaan toistaa puskurissa, koska sivun p levyversion PageLSN oli edistynyt. c) Peruutusvaiheessa kirjataan operaatioiden peruutuksista lokitietueita. Kun uuden häiriön satuttua on suoritettu analyysi- ja toistovaihe, on peruuntuvien transaktioiden peruutuskirjauksia vastaavat käänteisoperaatiotkin toistettu, joten peruutusvaiheessa jatketaan vanhojen peruuntuvien transaktioiden peruutusta siitä, mihin viime kerralla jäätiin ja keskeytetään ja peruutetaan uuden häiriön sattuessa etenemisvaiheessaan olleet transaktiot. Peruutus ei siis koskaan peruunnu, vaan edistyy (mikä seikka sisältyy jo transaktiomalliimmekin). 6. Olkoon TT viimeisessä valmiiksi ehtineessä tarkistuspisteessä CP vedostettu aktiivisten transaktioiden taulu ja PT päivitettyjen sivujen taulu. Määrätään seuraavat LSNt: n 1 = min{t:n aloituskirjauksen LSN T on TT:n transaktio}. n 2 = min{reclsn(p) p on PT:n sivu}. n 3 = tarkistuspisteen CP begin-checkpoint-tietueen LSN. Lokista voidaan silloin hävittää kaikki tietueet, joiden LSN on pienempi kuin n = min{n 1, n 2, n 3 }. Itse asiassa n:ää voidaan tarkentaa analyysivaiheessa. 4 Harjoitus 4 1. Ajoitus voidaan ajaa esim. eheässä tietokannassa {(x, u), (y, 1)}, jolloin tuloksena on epäeheä tietokanta {(x, v), (y, 0)}. Ajoituksen ainoa eristyneisyysanomalia on T 2 :n likainen kirjoitus I 2 [x, v]. 9

10 2. Ajoitus voidaan ajaa esim. eheässä tietokannassa {(0, 3), (1, 1), (2, 2), (3, 3)}, jolloin tuloksena on epäeheä tietokanta {(0, 4), (1, 1), (2, 2), (3, 3)}. Ajoituksen ainoa eristyneisyysanomalia on T 1 :n likainen luku R 1 [3, > 1, 3]. 3. Ajoituksen ainoa eristyneisyysanomalia on T 2 :n likainen luku R 2 [2, 0, v]. T 1 :n täydennysjono on G 1 = A 1 D1 1 [1, u]c 1 ja T 2 :n täydennysjono on G 2 = A 2 W2 1 [2, v, v + 1]C 2. Olkoon G jokin G 1 :n ja G 2 :n limite. Silloin HG:ssä esiintyy samat anomaliat kuin H:ssakin. Lisäksi esiintyy toistokelvoton luku, jos limitetään täydennysjonot seuraavasti: B 1 D 1 [1, u]b 2 R 2 [2, 0, v]w 2 [2, v, v + 1] A 1 D1 1 [1, u]c 1 A 2 W2 1 [2, v, v + 1]C 2. Tässä käänteisoperaatio D1 1 [1, u] tekee lukuoperaatiosta R 2 [2, 0, v] toistokelvottoman. Mutta tämä esiintyy vain, koska vastaava etenevän vaiheen operaatio D 1 [1, u] puolestaan tekee lukuoperaatiosta likaisen. Muita anomalioita ei voi esiintyä. Likaisia kirjoituksia ei voi olla, koskei niitä ollut H:ssakaan. Likaisia lukuja ei voi olla, koskei peruutusvaiheessa ole lukuoperaatioita. 4. Transaktion toteutuksessa relaatio r varmaankin käydään läpi kolme kertaa: kerran avg(v)- koosteen laskentaa varten, kerran sum(v)-koosteen laskentaa varten ja kerran count(*)- koosteen laskentaa varten. a) L = read committed, ts. likaiset luvut estetty. Koska toistokelvottomia lukuja voi esiintyä, saman r-monikon luku toistamiseen voi tuottaa eri V-arvon kuin edellisellä lukukerralla. Koska haamuja voi esiintyä, eri lukukerroilla voi tulla luetuksi eri joukko r-monikoita. Tulos voi olla a 1 = s 1 /c 1, a 2 = s 2 /c 2, missä a 1 a 2, s 1 s 2 tai c 1 c 2. b) L = repeatable read, ts. toistokelvottomat luvut, haamuja lukuunottamatta, on estetty. Haamujen takia tulos voi olla yhtä epäjohdonmukainen kuin a-kohdassa. L = serializable, ts. haamutkin on estetty. Silloin tulos on aina s/c, s/c. 5. Olkoot T 1 ja T 2 eteneviä tai sitoutuneita transaktioita. T 2 :n likainen kirjoitus: (1) T 1 lisää monikkojoukon s 1, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 poistaa ehdon P 2 täyttävien monikoiden joukon s 2, missä jokin s 1 :n monikko täyttää ehdon P 2 tai monikkojoukkojen s 1 ja s 2 monikoiden avainten joukot leikkaavat....i 1 [s 1 ]...D 2 [P 2, s 2 ]... T 1 poistaa ehdon P 1 täyttävien monikoiden joukon s 1, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lisää monikkojoukon s 2, missä jokin s 2 :n monikko täyttää ehdon P 1 tai monikkojoukkojen s 1 ja s 2 monikoiden avainten joukot leikkaavat....d 1 [P 1, s 1 ]...I 2 [s 2 ]... 10

11 T 2 :n likainen luku: (1) T 1 lisää monikkojoukon s 1, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lukee ehdon P 2 täyttävien monikoiden joukon s 2, missä jokin s 1 :n monikko täyttää ehdon P 2 (eli kuuluu s 2 :een)....i 1 [s 1 ]...R 2 [P 2, s 2 ]... (2) T 1 poistaa ehdon P 1 täyttävien monikoiden joukon s 1, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lukee ehdon P 2 täyttävien monikoiden joukon s 2, missä jokin s 1 :n monikko täyttää ehdon P 2 (ts. olisi tullut luetuksi, ellei T 1 olisi sitä poistanut)....d 1 [P 1, s 1 ]...R 2 [P 2, s 2 ]... T 1 :n toistokelvoton luku: (1) T 1 lukee ehdon P 1 täyttävät monikot, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lisää monikkojoukon s 2, jonka jokin monikko täyttää ehdon P 1....R 1 [P 1, s 1 ]...I 2 [s 2 ]... (2) T 1 lukee ehdon P 1 täyttävät monikot, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 poistaa ehdon P 2 täyttävien monikoiden joukon s 2, jonka jokin monikko täyttää ehdon P 1 (ts. s 1 ja s 2 leikkaavat)....r 1 [P 1, s 1 ]...D 2 [P 2, s 2 ]... Yleisessä tapauksessa, so. kun T 1 tai T 2 voi olla myös peruuntuva tai peruutuksensa päättänyt, anomaliat määritellään muokaten luentojen sivujen määritelmät tähän transaktiomalliin. 5 Harjoitus 5 1. B 1 : T 1 alkaa. I 1 [1]: T 1 :lle pitkäkestoinen X-lukko avaimeen 1 ja lyhytkestoinen X-lukko avaimen 1 seuraajaan. B 2 : T 2 alkaa. I 2 [2]: T 2 :lle pitkäkestoinen X-lukko avaimeen 2 ja lyhytkestoinen X-lukko avaimen 2 seuraajaan. B 3 : T 3 alkaa. I 3 [3]: T 3 :lle pitkäkestoinen X-lukko avaimeen 3 ja lyhytkestoinen X-lukko avaimen 3 seuraajaan. A 2 : T 2 keskeytyy. I2 1 [2]: T 2 poistaa avaimen 2 tietokannasta siihen omistamansa X-lukon turvin. C 2 : T 2 päättää peruutuksensa ja vapauttaa lukkonsa. C 3 : T 3 sitoutuu ja vapauttaa lukkonsa. I 1 [2]: T 1 :lle pitkäkestoinen X-lukko avaimeen 2 ja lyhytkestoinen X-lukko avaimen 2 seuraajaan 3. 11

12 Ajoitus on mahdollinen. Tietokannassa lopuksi avaimet 1, 2 ja 3. Transaktioiden sarjallistuvuusjärjestyksiä on kolme: T 2 T 1 T 3, T 2 T 3 T 1, T 3 T 2 T 1 (ts. T 2 ennen T 1 :tä). Huomaa, että ajoitus johtaisi lukkiumaan, jos käänteisoperaatiolle I2 1 [2] pitäisi varata lukkoja kuten etenevän vaiheen D 2 [2]:lle. 2. B 1 : T 1 alkaa. D 1 [0]: T 1 :lle lyhytkestoinen X-lukko avaimeen 0 ja pitkäkestoinen X-lukko avaimen 0 seuraajaan. A 1 : T 1 keskeytyy. D1 1 [0]: T 1 palauttaa avaimen 0 tietokantaan seuraajan X-lukon turvin. B 2 : T 2 alkaa. R 2 [0]: T 2 :lle pitkäkestoinen S-lukko avaimeen 0. Onnistuu! C 2 : T 2 sitoutuu. T 2 vapauttaa avaimen 0 lukkonsa. C 1 : T 1 päättää peruutuksensa. T 1 vapauttaa avaimen lukkonsa. R 2 [0] ei ole likainen luku, sillä avaimelle 0 on jo palautettu sen alkuperäinen arvo. 3. B 1 : T 1 alkaa. D 1 [0]: T 1 :lle lyhytkestoinen X-lukko avaimeen 0 ja pitkäkestoinen X-lukko avaimen 0 seuraajaan. I 1 [0]: T 1 :lle pitkäkestoinen X-lukko avaimeen 0. D 1 [0]: T 1 pitää kummankin X-lukkonsa. A 1 : T 1 keskeytyy. D1 1 [0]: T 1 palauttaa avaimen 0 tietokantaan seuraajan X-lukon turvin. B 2 : T 2 alkaa. R 2 [0]: T 2 yrittää varata pitkäkestoista S-lukkoa avaimeen 0. Tämä ei onnistu, vaan T 2 joutuu odottamaan. Ajoitus ei siis ole mahdollinen. Huomaa, ettei avain 0 vielä ole sitoutunut siinä vaiheessa, kun D1 1 [0] on suoritettu. Vielä on avaimen 0 päivityksiä T 1 :ssä peruuttamatta. R 2 [0] on likainen luku. 4. Ajoituksessa B 1 D 1 [1]B 2 I 2 [2] ei ole yhtään eristyneisyysanomaliaa, mutta se ei kuitenkaan ole mahdollinen avainvälilukituskäytännöss Tietokannassa {(1, 1), (3, 3)} ajettuna T 2 ei voi saada lyhytkestoista X-lukkoa avaimen 2 seuraajaan 3, koska T 1 :llä on siihen pitkäkestoinen X-lukko (otettu operaatiota D 1 [1] varten). 5. Olkoot T 1 ja T 2 eteneviä tai sitoutuneita transaktioita. T 2 :n likainen kirjoitus: T 1 päivittää avaimella x varustettua monikkoa, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 päivittää avaimella x varustettua monikkoa....w 1 [x]...w 2 [x]... T 2 :n likainen luku: (1) T 1 päivittää monikkoa (x,a,v), minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lukee operaatiolla R[x, a, v ] monikon (x, a, v ). 12

13 ...W 1 [x]...r 2 [x]... (2) T 1 päivittää monikkoa (x,a,v), minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lukee operaatiolla R[a,s] monikkojoukon s....w 1 [x, a, v, a, v ]...R 2 [a, s]... (3) T 1 päivittää monikon (x,a,v) monikoksi (x, a, v ), minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 lukee operaatiolla R[a, s] monikkojoukon s....w 1 [x, a, v, a, v ]...R 2 [a, s]... T 1 :n toistokelvoton luku: (1) T 1 lukee operaatiolla R[x,a,v] monikon (x,a,v), minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 päivittää avaimella x varustettua monikkoa....r 1 [x]...w [x]... (2) T 1 lukee operaatiolla R[a,s] monikkojoukon s, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 päivittää monikkoa (x,a,v)....r 1 [a, s]...w [x, a, v, a, v ]... (3) T 1 lukee operaatiolla R[a, s] monikkojoukon s, minkä jälkeen, T 1 :n ollessa vielä aktiivinen, T 2 päivittää monikon (x,a,v) monikoksi (x, a, v )....R 1 [a, s]...w 2 [x, a, v, a, v ]... Yleisessä tapauksessa, so. kun T 1 tai T 2 voi olla myös peruuntuva tai peruutuksensa päättänyt, anomaliat määritellään muokaten luentojen sivujen määritelmät tähän transaktiomalliin. Tarkastellaan ensin lukituskäytäntöä, jossa W- ja R-operaatioita varten varataan lukkoja seuraavasti: W[x]: pitkäkestoinen X-lukko avaimeen x. R[x,a,v]: pitkäkestoinen S-lukko avaimeen x. R[a,s]: pitkäkestoinen S-lukko s:n jokaisen monikon (x,a,v) avaimeen x. Tämä lukituskäytäntö estää likaiset kirjoitukset, muotoa (1) tai (3) olevat likaiset luvut sekä muotoa (1) tai (2) olevat toistokelvottomat luvut, muttei muotoa (2) olevia likaisia lukuja eikä muotoa (3) olevia toistokelvottomia lukuja. Muotoa (2) olevat likaiset luvut estyvät, jos operaatiota W [x, a, v, a, v ] varten varataan pitkäkestoinen X-lukko attribuuttiarvoon a ja operaatiota R[a,s] varten vähintään lyhytkestoinen S-lukko a:han. Muotoa (3) olevat toistokelvottomat luvut estyvät, jos operaatiota R[a,s] varten varataan pitkäkestoinen S-lukko attribuuttiarvoon a ja operaatiota W [x, a, v, a, v ] varten vähintään lyhytkestoinen X-lukko arvoon a. 6 Harjoitus a) T1 = B I[b, r 2, 0, 0] IX-lukitaan järjestelmä s, tietokanta b ja relaatio (b, r 2 ) (tässä järjestyksessä), 13

14 X-lukitaan (b, r 2, 0) ja (b, r 2, 1), lisätään monikko (0,0) relaatioon (b, r 2 ) ja vapautetaan avaimen (b, r 2, 1) X-lukko. I[b, r 1, XV ] IX-lukot s:ään ja b:hen T 1 :llä jo on; X-lukitaan (b, r 1 ) ja (b, r 2 ), luodaan relaatio r 1 (XV ) tietokantaan b ja pudotetaan relaation (b, r 2 ) lukko takaisin IX-lukoksi. I[b, r 1, 1, 1] IX-lukko s:ään T 1 :llä jo on, ja relaatioon (b, r 1 ) T 1 :llä on IX-lukkoa korkeampi X-lukko, joten monikkokohtaisia X-lukkoja ei ole tarpeen varata lainkaan. Lisätään monikko (1,1) relaatioon (b, r 1 ). C Vapautetaan T 1 :n hallussa olevat lukot avaimiin (b, r 2, 0), (b, r 2 ), (b, r 1 ), b ja s. b) T2 = B R[b, r 2, x, 1, v] IS-lukitaan s, b ja (b, r 2 ) (tässä järjestyksessä), S-lukitaan (b, r 2, x), luetaan tietue (b, r 2, x, v). W [b, r 2, 2, u, v] IX-lukitaan s, b ja (b, r 2 ) (tässä järjestyksessä, IS-lukot korotetaan IX-lukoiksi), X-lukitaan (b, r 2, 2) ja päivitetään monikko (2,u) monikoksi (2,v). C Vapautetaan T 2 :n hallussa olevat lukot avaimiin (b, r 2, 1), (b, r 2, 2), (b, r 2 ), b ja s. c) Kyllä ajoitus on mahdollinen. 2. a) Pitkäkestoinen X-lukko relaatioon r ja lyhytkestoinen X-lukko r:n seuraajaan. b) Pitkäkestoinen IS-lukko r:ään ja pitkäkestoinen S-lukko avaimeen (r,x). c) Count-kyselyä varten pitkäkestoinen S-lukko r:ään (tai pitkäkestoinen IS-lukko r:ään ja pitkäkestoiset S-lukot kaikkiin r:n monikoihin, mikä on työlästä). Insertoperaatiota varten r:n S-lukko (vast. IS-lukko) korotetaan SIX-lukoksi (tai vast. IS-lukko IX-lukoksi) ja varataan pitkäkestoinen X-lukko avaimeen (r,122) ja lyhytkestoinen X-lukko avaimen (r,x) seuraajaan. Haittoja siitä, ettei lukituksessa oteta huomioon relaatiotason yläpuolella olevia rakeisuustasoja: Tietokannoissa voi esiintyä haamurelaatioita ja järjestelmässä haamutietokantoja. Toinen haitta on lukituksen tehottomuus: paljon lukkoja alemmilla tasoilla. 3. Kohdistimen vakaudella ajettava transaktio T: B: T alkaa. R[x 1 ]: T:lle S-lukko avaimeen x 1. T:n S-lukko avaimeen x 1 vapautetaan, koskei x 1 :tä päivitetä. R[x 2 ]: T:lle S-lukko avaimeen x 2. W [x 2 ]: T:n S-lukko avaimeen x 2 korotetaan pitkäkestoiseksi X-lukoksi. R[x 3 ]: T:lle S-lukko avaimeen x 3. T:n S-lukko avaimeen x 3 vapautetaan, koskei x 3 :a päivitetä. C: T sitoutuu. T:n X-lukko avaimeen x 2 vapautetaan. 4. a) Täysin eristyneesti: B: T alkaa. R[x 1 ]: T:lle U-lukko avaimeen x 1. T:n U-lukko avaimeen x 1 lasketaan S-lukoksi, koskei x 1 :tä päivitetä. 14

15 R[x 2 ]: T:lle U-lukko avaimeen x 2. W [x 2 ]: T:n U-lukko avaimeen x 2 korotetaan X-lukoksi. R[x 3 ]: T:lle U-lukko avaimeen x 3. T:n U-lukko avaimeen x 3 lasketaan S-lukoksi, koskei x 3 :a päivitetä. C: T sitoutuu. Vapautetaan T:n lukot: x 1 :n S-lukko, x 2 :n X-lukko ja x 3 :n S-lukko. b) Kohdistimen vakaudella: B: T alkaa. R[x 1 ]: T:lle U-lukko avaimeen x 1. T:n U-lukko avaimeen x 1 vapautetaan, koskei x 1 :tä päivitetä. R[x 2 ]: T:lle U-lukko avaimeen x 2. W [x 2 ]: T:n U-lukko avaimeen x 2 korotetaan X-lukoksi. R[x 3 ]: T:lle U-lukko avaimeen x 3. T:n U-lukko avaimeen x 3 vapautetaan, koskei x 3 :a päivitetä. C: T sitoutuu. T:n X-lukko avaimeen x 2 vapautetaan. 5. Luku-kirjoitusmallissa kaikki täyteen eristyneisyyteen tarvittavat X-lukot saadaan hankituksi lokikirjauksista. Avainvälimallissa tämä on mahdollista vain, jos poisto-operaation D[x,v] lokikirjaukseen laitetaan myös avaimen x seuraaja-avain y. Operaation D[x,v] käänteisoperaation näet pitää suorittaa x:n seuraajaan y hankitun X-lukon turvin. Ks. luentojen sivu 155. Peruuntuvalle transaktiolle ei kuitenkaan voida hankkia S-lukkoja niiden etenemisvaiheessa mahdollisesti tekemien lukuoperaatioidensa suojaksi. Tämä voi aiheuttaa sen, että järjestelmään tuleva uusi transaktio tekee päivitysoperaation avaimeen x ennen kuin sitä lukenut peruuntuva transaktio ehtii päättää peruutuksensa. Tekeekö tämä päivitys siis lukuoperaatiosta toistokelvottoman. Vastaus on: ei. Olemme näet sulkeneet tämän tilanteen pois toistokelvottoman luvun määritelmästä (luentojen sivu 102). Perusteluna on, ettei tämä tilanne missään tapauksessa voi aiheuttaa mitään eheyden rikkoumaa. Siis peruuntuvienkin transaktioiden suoritus on täysin eristynyttä. 6. ts(t1) = 1, ts(t2) = 2, ts(t3) = 3. a) B1 W 1 [1] : wts(1) := 1 R 1 [2]rts(2) := 1 B 2 W 2 [2] Havaitaan, että avaimen 2 tuorein lukija T 1 on eri kuin T 2 ja aktiivinen, joten T 2 keskeytetään. Näin estyy toistokelvoton luku. b) B1 R 1 [1] : rts(1) := 1. B 2 R 2 [1] : rts(1) := 2. C 2 B 3 W 3 [1] Havaitaan, että avaimen 1 tuorein lukija T 2 on T 3 :a aikaisempi ja sitoutunut, joten operaatio W 3 [1] hyväksytään, vaikka se tekeekin T 1 :n operaatiosta R 1 [1] toistokelvottoman. wts(1):=3. C 3 W 1 [4] : wts(4) := 1. Tämä päivitys voi perustua operaation R 1 [1] lukemaan 15

16 epäajankohtaiseen arvoon. C 1 Miten estettäisiin toistokelvottomat luvut? Vai onko lainkaan tarpeen, ts. voiko niistä olla haittaa? c) B 1 B 2 W 2 [1] : wts(1) := 2. C 2 R 1 [1] Havaitaan, että T 1 :tä myöhäisempi transaktio T 2 on jo kirjoittanut avaimen 1, joten T 1 peruutetaan. Ajoituksessa ei ole eristyneisuusanomalioita. Lukituskäytännössä ajoitus onkin mahdollinen. 7 Harjoitus 7 1. Siivotaan p pois puskurista viemättä p:tä levylle ja naulitaan ja kirjoitussalvataan p (tämän pitää olla puskurinhallitsimen tuntema operaatio). Siis tuodaan p:n levyllä oleva versio puskuriin. Toistetaan lokin perusteella kaikki p:lle tulleet päivitykset, joiden LSN on suurempi kuin PageLSN(p). Siis ARIES-algoritmin toistovaihe yksinomaan sivulle p suoritettuna. Näin sivulle p saadaan ne päivitykset, jotka sillä oli ennen virheeseen keskeytyneen päivityksen alkamista. Sitten keskeytetään ja peruutetaan T normaaliin tapaan. Toinen, mutta turhan raaka tapa olisi kaataa koko järjestelmä ja suorittaa ARIES-algoritmi normaaliin tapaan kuten häiriöstä elvyttäessä. 2. Tarkastellaan ensin tapausta, jossa rakennemuutos esiintyy transaktion T etenemisvaiheessa. Rakennemuutoksen alkaessa pannaan muistiin m=lastlsn(t). Rakennemuutoksen viimeisen lokikirjauksen jälkeen asetetaan transaktiotaulussa LastLSN(T):= m. Esim. T lisää kasaan kaksi tietuetta, joista jälkimmäisen lisäys aiheuttaa uuden sivun varauksen kasaan: 100: : < T, I, p, i, x, v, 100 > 102: < T, allocate-page-for-heap, f, p, q, LastLSN = 101 > 103: < T, I, q, j, y, w, 101 > 104:... Tarkastellaan sitten tapausta, jossa rakennemuutos esiintyy keskeytyneen transaktion T peruutusvaiheessa, kun etenemisvaiheessa tehty ja lokiin tietueella < T, D, p, i, x, v, n > kirjattu operaatio D[x,v] joudutaan perumaan loogisesti, koska sivulla p ei enää ole tilaa monikon (x,v) palautukselle. 16

17 110: : < T, allocate-page-for-heap, f, p, q, LastLSN = 110 > 112: < T, undo(d), q, 1, x, v, n > 113:... Siis peruutusvaiheen aikana suoritetut rakennemuutokset kirjataan kuten etenemisvaiheessa. 3. a) Haetaan avaimen (10,20) peittävä ISAM-rakenteen lehtisivu p ja lisätään tietue (10,20,30, xyz ) soluun p kuten luennoilla on esitetty. Olkoon i tietueen monikkotunniste. Lisätään tietue (30,i) hajautushakemistoon luennoilla esitetyllä algoritmilla, paitsi ettei mitään lukkoja varata. Kysely saadaan yhdisteenä kahdesta kyselystä: select * from R where A = 25 and 300 B and B 400 union all select * from R where C = 50 and not (A = 25 and 300 B and B 400) Edellinen select-kysely lasketaan ISAM-hakemistoa käyttäen ja jälkimmäinen kysely hajautushakemistoa käyttäen. Kyselyssä ei voi hyödyntää hakemistoja, vaan relaation r ISAM-rakenteen lehtisivut (solut) selataan vasemmalta oikealle. Kysely voidaan ratkaista tehokkaimmin käymällä läpi ainoastaan tiheä oheishakemisto (hajautushakemisto). Relaatio r S-lukitaan. r:n monikoita ei ole tarpeen hakea esille. 4. Hyvänä puolena on, että r:n monikon monikkotunnisteen muuttuminen (esim. sivulta toiselle siirron vuoksi) ei vaadi mitään muutosta r:n oheishakemistoihin. Lisäksi useammat kyselyt voidaan ratkaista pelkästään hakemistoa käyttäen. Huonona puolena on, että tietueen hakupolku oheishakemiston kautta on yhtä pitempi kuin muutoin: oheishakemiston lehtisivulta saadaan vasta haettavan tietueen yksilöivä avain, jota käyttäen on vielä kuljettava harvan hakemiston polku juuresta itse tietueen sisältävälle sivulle. 5. Merkitään: rl(p) = fix(p) + read-latch(p). wl(p) = fix(p) + write-latch(p). ul(p) = unlatch(p) + unfix(p). B 1 : Kirjataan lokiin: 100: < T 1, B > R 1 [x, 12, v]: rl(p 1 ); rl(p 3 ); ul(p 1 ); rl(p 6 ); ul(p 3 ); S-lock(12); ul(p 6 ). I 1 [14, v 2 ]: X-lock(14); rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 6 ); ul(p 3 ); rl(p 7 ); X-lock(15); wl(0). Kirjataan lokiin: 101: < allocate-page-for-bucket, p 6, p 6, q >; ul(0). Kirjataan lokiin: 17

18 102: < T 1, I, q, 1, 14, v 2, 100 >; ul(p 6 ); ul(q); ul(p 7 ); unlock(15). I1[13, v 3 ]: X-lock(13); rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 6 ); ul(p 3 ); wl(q). Kirjataan lokiin: 103: < T 1, I, q, 2, 13, v 3, 102 >; ul(p 6 ); ul(q). B 2 : Kirjataan lokiin: 104: < T 2, B > I2[8, u ]: X-lock(8); rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 6 ); ul(p 3 ); wl(q); X-lock(9). Kirjataan lokiin: 105: < T 2, I, q, 3, 8, u, 104 >; ul(p 6 ); ul(q); unlock(9). A 1 : Kirjataan lokiin: 106: < T 1, A > undo(i 1 )[13, v 3 ] : wl(q); kirjataan lokiin: 107: < T 1, undo(i), q, 2, 102 >; ul(q). undo(i 1 )[14, v 2 ] : wl(q); kirjataan lokiin: 108: < T 1, undo(i), q, 1, 100 >; ul(q). C 1 : Kirjataan lokiin: 109: < T 1, C >; pakotetaan loki levylle; unlock(14); unlock(13); unlock(12). D 2 [12, v]: X-lock(12); rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 6 ); ul(p 3 ); wl(q); rl(p 7 ); X-lock(15); kirjataan lokiin: 110: < T 2, D, p 6, 4, 12, v, 105 >; ul(p 6 ); ul(q); ul(p 7 ); unlock(12). C 2 : Kirjataan lokiin: 111: < T 2, C >; pakotetaan loki levylle; unlock(8); unlock(15). 6. Kun transaktio T kulkee hakupolun jotain operaatiotaan (R, I, D, W) varten, se laittaa muistiin vastaisen varalle hakupolun viimeisen sivun p tunnisteen, avainten alarajan low-key(p) ja ylärajan high-key(p) sekä (päivityksen jälkeisen) PageLSN:n. Mikäli seuraavaksi suoritettavan T:n operaation hakuavain z sijoittuu välille low-key(p) z < high-key(p), yritetään naulita ja lukusalvata (R) tai kirjoitussalvata (I, D, W) sivu 18

19 p. Mikäli tämä onnistui ja sivun PageLSN on entisensä, ollaan oikealla sivulla. Muutoin jos naulinta ja salpaus onnistuivat, mutta PageLSN on muuttunut, tutkitaan (sivun sisällöstä), onko sivu vielä kyseisen rakenteen lehtisivu ja sijoittuuko avain z sivun pienimmän avaimen ja suurimman avaimen väliin. Jos näin on, ollaan oikealla sivulla. Muutoin on avainta z haettava puun juuresta lähtien. Vielä paremmin: Talletetaan koko hakupolku p 1, p 2,..., p n juuresta p 1 lehteen p n, kunkin sivun p i low-key ja high-key ja PageLSN. Uudelleen salpausta yritetään alimmalle sivulle p i, jonka peittämä väli kattaa avaimen z. Mikäli ei onnistu, yritetään lähinnä ylemmältä sivulta, jne. Pahimmassa tapauksessa joudutaan lähtemään juuresta. 8 Harjoitus 8 1. Ei voi esiintyä, sillä T 3 :a generoiva prosessi pitää kirjoitussalvat rakennemuutoksen kohteina oleviin sivuihin, siis mm. juureen p 1, rakennemuutoksen loppuun asti. Loogista operaatiota undo(w )[x, u, v] suorittava T 1 joutuu odottamaan T 3 :n salvan vapautumista. 2. Merkitään: rl(p) = fix(p) + read-latch(p). wl(p) = fix(p) + write-latch(p). ul(p) = unlatch(p) + unfix(p). Varataan avaimeen 13 pitkäkestoinen X-lukko. wl(p 1 ); wl(p 3 ); wl(p 6 ); havaitaan, että hakupolun kaikki sivut pitää halkaista ja puuta korottaa; wl(0); varataan uudet sivut p 1 ja p 1; wl(p 1); wl(p 1); korotetaan puuta; kirjataan lokiin 101: < inc-height, p 1, p 1, 30, p 1, {(, p 2 ), (8, p 3 )}, {(30,...), (60,...)} >; Page-LSN(0)=101; Page-LSN(p 1 )=101; Page-LSN(p 1)=101; Page-LSN(p 1)=101; ul(0); ul(p 1 ); ul(p 1); wl(0); varataan uusi sivu p 3; wl(p 3); halkaistaan p 3 ; kirjataan lokiin 102: < split, p 1, p 3, 20, p 3, {(20, p 8 ), (25, p 9 )} >; Page-LSN(0)=102; Page-LSN(p 1)=102; Page-LSN(p 3 )=102; Page-LSN(p 3)=102; ul(0); ul(p 1); ul(p 3); wl(0); varataan uusi sivu p 6; wl(p 6); halkaistaan p 6 ; kirjataan lokiin 103: < split, p 3, p 6, 11, p 6, {(11, u), (12, v), p 7 } >; ul(0); ul(p 3 ); ul(p 6 ); rl(p 7 ); varataan avaimen 13 seuraajaan 15 lyhytkestoinen X-lukko. Lisätään monikko (13, v ) sivulle p 6 tietuepaikkaan 3; kirjataan lokiin 104: < T, I, p 6, 3, 13, v, 100 >; Page-LSN(p 6)=104; Last-LSN(T)=104; ul(p 6); ul(p 7 ); vapautetaan avaimen 15 lyhytkestoinen lukko. 3. Lapsilinkin lisäykseen on varauduttu varmistamalla, että isässä on tilaa, tarvittaessa halkaisemalla isä. Lapsilinkin poistoon on varauduttu järjestämällä, ettei isä alivuoda linkin poistosta, tarvittaessa yhdistämällä isä sisaruksensa kanssa tai tasaamalla tietueet sisarusten kesken. Jokainen rakennemuutos säilyttää B-puun eheyden. Koska jokainen 19

20 rakennemuutos on kirjattu yhteen ainoaan, yhdelle sivulle kokonaan mahtuvaan lokitietueeseen, tulee ARIES-algoritmin toistovaiheessa jokainen rakennemuutos joko kokonaan toistetuksi (jos lokikirjaus oli ehtinyt levylle) tai rakennemuutoksesta ei ole mitään jälkiä lokissa. 4. Suoritetaan tarvittavat rakennemuutokset avaimen hakupolun läpikäynnin yhteydessä ennakoivasti: Lisättävän avaimen peittävää sivua haettaessa kohdattu täysi sivu halkaistaan (täysi juuri aiheuttaa puun korotuksen). Poistettavan avaimen sisältävää sivua haettaessa kohdattu sivu, jossa on vain minimimäärä tietueita, yhdistetään tai tasataan sisaruksensa kanssa (juuren vajaus aiheuttaa puun madalluksen). Seuraavaan on merkitty ainoastaan salpojen varaukset ja vapautukset sekä tuotetut lokikirjaukset (muutoin samoin kuin tehtävässä 2). wl(p 1 ); wl(0); wl(p 1); wl(p 1); 101: < inc-height, p 1, p 1, 30, p 1, {(, p 2 ), (8, p3)}, {(30,...), (60,...)} > ul(0); ul(p 1 ); ul(p 1); wl(p 3 ); wl(0); wl(p 3); 102: < split, p 1, p 3, 20, p 3, {(20, p 8 ), (25, p 9 )} > ul(0); ul(p 1); ul(p 3); wl(p 6 ); wl(0); wl(p 6); 103: < split, p 3, p 6, 11, p 6, {(11, u), (12, v)} > ul(0); ul(p 3 ); ul(p 6 ); rl(p 7 ); X-lock(15); 104: < T, I, p 6, 3, 13, v, 100 > ul(p 6); ul(p 7 ). Huonona puolena ovat turhat rakennemuutokset. Esimerkiksi juuri halkaistaan, vaikka avaimen hakupolun jokin alempi sivu olisi vajaa. 5. Ratkaisu, kun epätasapainoisuuksia ei korjailla: Kirjataan lokiin 100: < T, B >. Varataan pitkäkestoinen X-lukko avaimeen 18. rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 6 ); ul(p 3 ); wl(p 7 ); ul(p 6 ). Havaitaan, että p 7 pitää halkaista; wl(0); varataan uusi sivu p 7; wl(p 7); halkaistaan p 7 ; kirjataan lokiin 101: < split, p 7, 17, p 7, {(17,...), (20, p 8 )} >; Page-LSN(0)=101; Page-LSN(p 7 )=101; Page-LSN(p 7)=101; ul(0); ul(p 7 ); rl(p 8 ). Varataan lyhytkestoinen X-lukko avaimen 18 seuraajaan 20. Lisätään monikko (18, u) sivulle p 7 tietuepaikkaan 3; kirjataan lokiin 102: < T, I, p 7, 3, 18, u, 100 >; Page-LSN(p 7)=102; ul(p 7); ul(p 8 ); vapautetaan avaimen 20 lyhytkestoinen lukko. Varataan pitkäkestoinen X-lukko avaimeen 22. rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 8 ); ul(p 3 ). Havaitaan, että sivu p 8 pitää halkaista; wl(0); varataan uusi sivu p 8; wl(p 8); halkaistaan p 8 ; kirjataan lokiin 20

21 103: < split, p 8, 24, p 8, {(24,...), (25, p 9 )} >; Page-LSN(0)=103; Page-LSN(p 8 )=103; Page-LSN(p 8)=103; ul(0); ul(p 8); rl(p 8). Varataan lyhytkestoinen X-lukko avaimen 22 seuraajaan 24. Lisätään monikko (22, v) sivulle p 8 tietuepaikkaan 3; kirjataan lokiin 104: < T, I, p 8, 3, 22, v, 102 >; Page-LSN(p 8 )=104; ul(p 8 ); ul(p 8); vapautetaan avaimen 24 lyhytkestoinen lukko. Kirjataan lokiin 105: < T, C > ja pakotetaan loki levylle. Vapautetaan avainten 18 ja 22 pitkäkestoiset lukot. Ratkaisu, kun tasapainoisuuksia korjaillaan (näkyviin merkitty ainoastaan ainoastaan salpojen varaukset ja vapautukset sekä tuotetut lokikirjaukset): 100: < T, B > rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 6 ); havaitaan, ettei p 3 :ssa ole p 7 :ään osoittavaa lapsilinkkiä; koska p 3 on täynnä, on se ensin halkaistava; ul(p 3 ); wl(p 3 ); wl(0); wl(p 3); 101: < split, p 3, 25, p 3, {(25, p 9 ), (, 0)} > ul(0); ul(p 3); 102: < add-link, p 3, 15, p 7 > ul(p 3 ); wl(p 7 ); ul(p 6 ); wl(0); wl(p 7); 103: < split, p 7, 17, p 7, {(17,...), (20, p 8 )} > ul(0); ul(p 7 ); rl(p 8 ); 104: < T, I, p 7, 3, 18, u, 100 > ul(p 7); ul(p 8 ); rl(p 1 ); rl(p 3 ); ul(p 1 ); wl(p 8 ); ul(p 3 ); wl(0); wl(p 8); 105: < split, p 8, 24, p 8, {(24,...), (25, p 9 )} > ul(0); ul(p 8); rl(p 8); X-lock(24); 106: < T, I, p 8, 3, 22, v, 102 > ul(p 8 ); ul(p 8); 107: < T, C > 9 Harjoitus 9 1. LINEITEM-relaation OrderNr-hakemisto on kasautuva, muut hakemistot ovat hajautuvia. 21

22 a) 1 levyhaku. b) 10000/1000 = 10 levyhakua. c) = 5500 levyhakua (tiedostoselaus). Nr-hakemiston selaukseen perustuva ratkaisu veisi levyhakua. d) 1 levyhaku. e) /200 = 500 levyhakua. f) 10000/1000 = x (5000/10000) = = 20 levyhakua. 2. Relaatiossa SALES on T = 500 x 10 x 300 x 5 = monikkoa, jotka vievät vähintään B = T/150 = ja enintään B = T/75 = harvan B-puun lehtisivua. Kyselyt a, b ja c voidaan laskea tiheää hakemistoa käyttäen ja kyselyt d, e ja f harvaa hakemistoa käyttäen. Kustannukset (levyhakua): a) T/(500 x 5) = b) T/(500 x 5 x 12) = 250. c) T/(500 x 5 x 300) = 10. d) B/(10 x 5)... B /(10 x 5) = e) B/(10 x 5 x 12)... B /(10 x 5 x 12) = f) B/(10 x 5 x 300)... B /(10 x 5 x 300) = Ehto (A = a 1 B b) (A a 2 C = c) hajotetaan kahdeksi ehdoksi: A = a 1 B b. A a 2 C = c (A = a 1 B b). Edellinen on jo konjunktiomuodossa. Jälkimmäinen sievennetään: A a 2 C = c (A a 1 B = b). Tämä on ekvivalentti seuraavan kanssa: A a 2 C = c A a 1 A a 2 C = c B = b. Tämä hajotetaan kahdeksi ehdoksi: A a 2 C = c A a 1. A a 2 C = c B = b (A a 2 C = c A a 1 ). Edellinen on konjuntiomuotoa. Jälkimmäinen on ekvivalentti seuraavan kanssa: C = c B = b A = a 1. Lopputulos: select * from R where A = a 1 and B! = b union all select * from R where A! = a 2 and C = c and A! = a 1 union all select * from R where C = c and B = b and A = a a) Tauluselaus, projektio A:lle ja järjestäminen. Mikäli A:n arvojoukko on pieni, pidetään yllä frekvenssilaskureita keskusmuisissa. 22

23 b) Harvan hakemiston lehtitason selaus. c) Tiheän hakemiston lehtitason selaus. Ei ole tarpeen kurkistaa itse relaatioon. 5. M = 50, C = 8, S = 10ms, r = 5ms, t = 0, 4ms. Lukuun ja kirjoitukseen tarvitaan 2 kertaa. Eriä on 200 kpl. Eli tehdään 48 ryväslukua ja 2 normaalia lukua. Eli ryvästetyt luvut vievät: (6 x ( x 0,4))ms. Loput vievät: ( x 0,4) ms. Eli Vaiheessa 1 tuotetaan 200 kpl 50 sivun eriä. Kustannus: 2 x 200 x (6 x ( x 0,4) x 0,4) = 2 x 200 x (6 x 18,2 + 15,8) = 2 x 200 x (109,2 + 15,8) = 2 x 200 x 125 = 2 x ms = 50 s. Vaiheessa 2 lomitetaan kerrallaan aina F = 5 kpl 50-sivuisia eriä 250 sivun eriksi. Yhden lomituksen kustannus: 5 x (31 x 18,2 + 15,8) = = 1205 ms. Tässä 31 = 248/8. Lomituksia tehdään kaikkiaan 40 kpl. Vaiheen 2 kokonaiskustannus on siis 40 x 1205 = ms = 48,2 s. Vaiheessa 3 lomitetaan kerrallaan aina F = 5 kpl 250-sivuisia eriä 1250 sivun eräksi. Yhden lomituksen kustannus: 5 x (156 x 18,2 + 15,8) = = 5755 ms. Tässä 156 = 1248/8. Lomituksia tehdään kaikkiaan 8 kpl. Vaiheen 3 kokonaiskustannus on siis 8 x 5755 = ms = 46,0 s. Vaiheessa 4 lomitetaan 4 kpl 1250-sivuisia eriä 5000 sivun eräksi ja toiset 4 kpl 1250-sivuisia eriä 5000 sivun eräksi. Vaiheen 4 kustannus on 2 x (4 x (625 x 18,2)) = 2 x ( ) = ms = 45,6 s. Tässä 625 = 5000/8. Vaiheessa 5 lomitetaan 2 kpl 5000 sivun eriä yhdeksi sivun eräksi. Vaiheen 5 kustannus on: 2 x x 18,2 = = ms = 45,5 s. Tässä 1250 = 10000/8. Yhteensä: , ,6 + 45,5 = 235,3 s = noin 4 min. Vielä vähän parempi aika saataisiin, jos käytettäisiin puskurin kokoa 48, joka jakaantuu tasan 8:lla (toisin kuin 50). Vrt. että ryvästämätön lomitus vei 15,4 min. 10 Harjoitus r(a, B), s(b, C), r s, r.b s.b, I r.b I s.b. Valitaan T r = T S = 6, I r.b = 2 ja I s.b = 3. Tällöin T r Ts I s.b = Tr Ts I s.b = 6 6 = a) r(ab) = {11, 21, 31, 12, 22, 32}. s(bc) = {11, 12, 21, 22, 31, 32}. Jolloin r s = {111, 112, 211, 212, 311, 312, 121, 122, 221, 222, 331, 322}. Eli 12 monikkoa. b) r(ab) = {11, 21, 31, 41, 51, 12}. s(bc) = {11, 12, 13, 14, 21, 31}. Jolloin r s = {111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 121}. Eli 21 monikkoa. Tai: r(ab) mikä tahansa, mutta s(bc):n B-sarakkeessa on 1, 2, 3, 3, 3, 3. 23

24 2. Merkitään: E = EMPLOYEE, W = WORKS-ON, P = PROJECT. T E = T W = 2 x T E = T P = T W / 20 = 100. B E = 1000 / (4000/400) = 1000 / 10 = 100. W-monikko on korkeintaan = 20 tavua. B W = 2000 / (4000/20) = 2000 / 200 = 10. B P = 100 / (4000/200) = 100 / 20 = 5. I ESSN = I SSN = T E. I P rnr = I Nr = T P. Merkitään Q = E SSN=ESSN W P rnr=nr P. Tehtävänä on arvioida B Q. Ratkaisu 1: Q-monikko on = 620 tavua. Liitoksessa on T Q = T W = 2000 monikkoa ja B Q = T W / (4000/620) = 2000 / 6 = 334 sivua. Ratkaisu 2: Merkitään R = E SSN=ESSN W, jolloin Q = R P rnr=nr P. T R = T E x T W /I SSN = 1000 x 2000 / 1000 = B R = (B E x T W + T E x B W ) / I SSN = (100 x x 10) / 1000 = 210. B Q = (B R x T P + T R x B P ) / I Nr = (210 x x 5) / 100 = 310 sivua. 3. T r = 10000, B r = 500, T r /B r = 20, I r.b = 100. T s = 1000, I s.b = 100. Hakemistoliitoksen syötekustannus: B r + T r x T s / I s.b = x 10 = Järjestäen r ensin (kun M = 10): 2 B r log M B r + B r + I r.b x T s / I s.b = 2 x 500 x x 10 = = a) Välitulosten materialisaatioihin perustuva laskenta: 1. R1:= Π Givenname,SSN (σ Surname= Smith (EMP lasketaan EMPLOYEE-relaation harvan B-puurakenteen avulla. 2. R2:= Π Givenname,P rnr (R1 SSN WORKS-ON) lasketaan hakemistoliitoksena. 3. R3:= Π Givenname,Name (R2 P rnr=nr σ StartDate> (P ROJECT )) lasketaan hakemistoliitoksena. Putkitusta voidaan käyttää eliminoimaan välitulosten R1 ja R2 materialisaatiot. Operaatio 1 putkittaa tulosmonikoitaan operaatiolle 2, joka voi tuottaa heti liitosmonikoita ja putkittaa niitä operaatiolle 3. Operaatio 3 puolestaan voi tuottaa tulosmonikoita sitä mukaa kuin se saa syötettä operaatiolta Tässä ei pidä kaikkia valintoja suorittaa ensin. Pyritään välttämään isojen olioiden, tässä tapauksessa kuvien, hakua levyltä sekä kalliiden funktioiden laskentaa. Relaatio WEEK on mitättömän pieni. Valitaan siitä tauluselauksella helmikuun viikot, jolloin saadaan 4 viikkonumeroa (Nr). Näillä suoritetaan haku relaatioon MAP sen WeekNro-hakemiston avulla. Valitaan mukaan ne MAP-monikot m, joille m.channel = 4. Näille haetaan esiin m.picture ja lasketaan snowcoverage(m.picture). Edullinen olisi tiedostorakenne, jossa MAP-monikoiden Picture-attribuuttien arvot on sijoitettu eri tiedostoon. MAP-monikon attribuutissa Picture olisi vain Picture-olion tunniste, jolloin vältytään tarpeettomilta isojen olioiden hauilta. 6. Muunnos on mahdollinen, kun B on relaation s yksilöivä avain. Jos näin ei ole, jälkimmäinen kysely voi antaa enemmän monikoiden kaksoiskappaleita kuin edellinen. Jos sitä vastoin ulompi kysely olisi select distinct -muotoa, olisivat kyselyt aina ekvivalentit. Muunnos on hyödyllinen siksi, että se mahdollistaa useampia erilaisia laskentastrategioita. Esim. hakemistoliitos, jossa r on ulompi ja s sisempi relaatio, tai päinvastoin. 24

Tietokantarakenteet ja -algoritmit 3. harjoitus

Tietokantarakenteet ja -algoritmit 3. harjoitus Tietokantarakenteet ja -algoritmit 3. harjoitus Malliratkaisut 1. Analyysivaiheen alussa alustetaan aktiivisten transaktioiden taulu (tyhjä) ja päivitettyjen sivujen taulu (samoin tyhjä) tarkistuspisteestä.

Lisätiedot

Tietokantarakenteet ja -algoritmit 6. harjoitus

Tietokantarakenteet ja -algoritmit 6. harjoitus Tietokantarakenteet ja -algoritmit 6. harjoitus Malliratkaisut 1.. a) T1 = B I[b, r 2, 0, 0] IX-lukitaan järjestelmä s, tietokanta b ja relaatio (b, r 2 ) (tässä järjestyksessä), X-lukitaan (b, r 2, 0)

Lisätiedot

R 2 [0] ei ole likainen luku, sillä avaimelle 0 on jo palautettu sen alkuperäinen arvo.

R 2 [0] ei ole likainen luku, sillä avaimelle 0 on jo palautettu sen alkuperäinen arvo. Tietokantarakenteet ja -algoritmit 5. harjoitus Malliratkaisut 1. B 1 : T 1 alkaa. I 1 [1]: T 1 :lle pitkäkestoinen X-lukko avaimeen 1 ja lyhytkestoinen X-lukko avaimen 1 seuraajaan. B 2 : T 2 alkaa. I

Lisätiedot

Lisätään avainarvo 6, joka mahtuu lehtitasolle:

Lisätään avainarvo 6, joka mahtuu lehtitasolle: Helsingin Yliopisto, Tietojenkäsittelytieteen laitos Tietokannan hallinta, kurssikoe 11.6.2004, J. Lindström Ratkaisuehdotuksia 1. Hakemistorakenteet, 15p. Tutkitaan tyhjää B+-puuta, jossa jokaiselle hakemistosivulle

Lisätiedot

Lisätään avainarvo 1, joka mahtuu lehtitasolle:

Lisätään avainarvo 1, joka mahtuu lehtitasolle: Helsingin Yliopisto, Tietojenkäsittelytieteen laitos Tietokannan hallinta, kurssikoe 14.5.2004, J. Lindström Ratkaisuehdotuksia 1. Hakemistorakenteet, 15p. Tutkitaan tyhjää B+-puuta, jossa jokaiselle hakemistosivulle

Lisätiedot

Lokin ylläpito ja puskurinhallinta

Lokin ylläpito ja puskurinhallinta Lokin ylläpito ja puskurinhallinta C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh & P. Schwartz: ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead

Lisätiedot

Transaktioiden peruutus ja tietokannan elvytys häiriöstä

Transaktioiden peruutus ja tietokannan elvytys häiriöstä Transaktioiden peruutus ja tietokannan elvytys häiriöstä C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh & P. Schwartz: ARIES: a transaction recovery method supporting fine-granularity locking and partial

Lisätiedot

T-106.5220 Transaktionhallinta tietokantajärjestelmissä

T-106.5220 Transaktionhallinta tietokantajärjestelmissä Opetusmoniste T-106.5220 Transaktionhallinta tietokantajärjestelmissä Kevät 2009 (periodi III) Osa 1: Looginen tietokanta ja transaktiot Osa 2: Fyysinen tietokanta Osa 3: Lokin ylläpito ja puskurinhallinta

Lisätiedot

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra 14.9.2000. Harri Laine 1. Relaatioalgebra

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra 14.9.2000. Harri Laine 1. Relaatioalgebra DO NOT PRINT THIS DOCUMENT operaatiot, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus erityisiä relaatioalgebran operaatioita projektio,

Lisätiedot

Elvytys. R & G Chapter Tietokannan hallinta, kevät 2006, J. Li 1

Elvytys. R & G Chapter Tietokannan hallinta, kevät 2006, J. Li 1 Elvytys R & G Chapter 18 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 1 Motivaatio Atomisuus: Transaktiot voivat päättyä peruutukseen ( Rollback ). Pysyvyys: Entä jos TKHJ kaatuu? (Syyt?) Halutut ominaisuudet

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

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen) 58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen) 1. Avaimet 1, 2, 3 ja 4 mahtuvat samaan lehtisolmuun. Tässä tapauksessa puussa on vain yksi solmu, joka on samaan aikaan juurisolmu

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

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100

Lisätiedot

3. Tietokannan hakemistorakenteet

3. Tietokannan hakemistorakenteet 3. Tietokannan hakemistorakenteet Tiedoston tietueiden haku voi perustua johonkin monesta saantipolusta (access path): - perustiedoston tiedostorakenne - hakemistot, joita voidaan tehdä käsittelytarpeiden

Lisätiedot

3. Tietokannan hakemistorakenteet

3. Tietokannan hakemistorakenteet 3. Tietokannan hakemistorakenteet Tiedoston tietueiden haku voi perustua johonkin monesta saantipolusta (access path): - perustiedoston tiedostorakenne - hakemistot, joita voidaan tehdä käsittelytarpeiden

Lisätiedot

Transaktioiden eristyvyys

Transaktioiden eristyvyys Transaktioiden eristyvyys H. Berenson, P. Bernstein, J. Gray, J. Melton, E. O Neil & P. O Neil: A critique of ANSI SQL isolation levels. Proc. of the 1995 ACM SIG- MOD Internat. Conf. on Management of

Lisätiedot

D B. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus

D B. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus Tietokannalla on tyypillisesti useita samanaikaisia käyttäjiä (prosesseja). On toivottavaa, että yhdenkään käyttäjän toiminta ei hidastuisi kohtuuttomasti, vaikka muita käyttäjiä olisi runsaastikin yhdenkään

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

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö Algoritmit 2 Luento 6 Ke 29.3.2017 Timo Männikkö Luento 6 B-puun operaatiot B-puun muunnelmia Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 2/31 B-puu

Lisätiedot

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö Algoritmit 1 Luento 7 Ti 31.1.2017 Timo Männikkö Luento 7 Järjestetty binääripuu Binääripuiden termejä Binääripuiden operaatiot Solmun haku, lisäys, poisto Algoritmit 1 Kevät 2017 Luento 7 Ti 31.1.2017

Lisätiedot

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö Algoritmit 2 Luento 5 Ti 28.3.2017 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot Algoritmit 2 Kevät 2017 Luento 5 Ti 28.3.2017 2/29 B-puu Algoritmit 2 Kevät 2017 Luento 5 Ti

Lisätiedot

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely HAAGA-HELIA Heti-09 1 (14) Transaktionkäsittely Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen...

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

25.4.05. Helsingin yliopisto/tktl Tietokannan hallinta, kevät 2005. Harri Laine 1 D B. Transaktionhallinta - samanaikaisuus

25.4.05. Helsingin yliopisto/tktl Tietokannan hallinta, kevät 2005. Harri Laine 1 D B. Transaktionhallinta - samanaikaisuus Tietokannalla on tyypillisesti useita samanaikaisia käyttäjiä (= käyttäviä prosesseja). On toivottavaa, että yhdenkään käyttäjän toiminta ei hidastuisi kohtuuttomasti, vaikka muita käyttäjiä olisi runsaastikin

Lisätiedot

Transaktiot - kertausta

Transaktiot - kertausta Hajautettujen järjestelmien perusteet Transaktiot - kertausta Distributed Systems, Concepts and Design, George Coulouris, Jean Dollimore, Tim Kindberg Addison-Wesley 1988,1994. Pearson Education 2001 ISBN:

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Kurssikoe on maanantaina 29.6. Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

Kurssikoe on maanantaina 29.6. Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla. HY / Avoin ylioisto Johdatus yliopistomatematiikkaan, kesä 201 Harjoitus 7 Ratkaisut palautettava viimeistään perjantaina 26.6.201 klo 16.00. Huom! Luennot ovat salissa CK112 maanantaista 1.6. lähtien.

Lisätiedot

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen Seminaari: Keskusmuistitietokannat Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen Sisältö Johdanto Esiteltävien menetelmien taustoja Hajautetun tietokannan spekuloiva samanaikaisuuden

Lisätiedot

D B. Harvat hakemistot. Harvat hakemistot

D B. Harvat hakemistot. Harvat hakemistot Harvassa hakemistossa on ei ole hakemistomerkintöjä jokaista tietuetta kohden vaan yksi merkintä jotain isompaa kokonaisuutta esimerkiksi sivua tai sivujoukkoa (esim. saman uran sivut) kohti Harvan hakemiston

Lisätiedot

1 2 x2 + 1 dx. (2p) x + 2dx. Kummankin integraalin laskeminen oikein (vastaukset 12 ja 20 ) antaa erikseen (2p) (integraalifunktiot

1 2 x2 + 1 dx. (2p) x + 2dx. Kummankin integraalin laskeminen oikein (vastaukset 12 ja 20 ) antaa erikseen (2p) (integraalifunktiot Helsingin yliopisto, Itä-Suomen yliopisto, Jyväskylän yliopisto, Oulun yliopisto, Tampereen yliopisto ja Turun yliopisto Matematiikan valintakoe (Ratkaisut ja pisteytys) 500 Kustakin tehtävästä saa maksimissaan

Lisätiedot

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö Algoritmit 1 Luento 13 Ti 23.2.2016 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö Algoritmit 2 Luento 5 Ti 26.3.2019 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot B-puun muunnelmia Algoritmit 2 Kevät 2019 Luento 5 Ti 26.3.2019 2/34 B-puu B-puut ovat tasapainoisia

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

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

Relaatioalgebra. Relaatioalgebra. Relaatioalgebra. Relaatioalgebra - erotus (set difference) Kyselyt:

Relaatioalgebra. Relaatioalgebra. Relaatioalgebra. Relaatioalgebra - erotus (set difference) Kyselyt: Relaatiomalliin liittyy malli tietokannan käsittelystä Tietokannasta pitää pystyä hakemaan tietoa ja toisaalta tietokantaa on ylläpidettävä Tietokannan käsittelyn malli relaatioalgebra määrittelee operaatiot,

Lisätiedot

Kyselyt: Lähtökohtana joukko lukuja Laskukaava kertoo miten luvuista lasketaan tulos soveltamalla laskentaoperaatioita

Kyselyt: Lähtökohtana joukko lukuja Laskukaava kertoo miten luvuista lasketaan tulos soveltamalla laskentaoperaatioita Relaatioalgebra Relaatiomalliin liittyy malli tietokannan käsittelystä Tietokannasta pitää pystyä hakemaan tietoa ja toisaalta tietokantaa on ylläpidettävä Tietokannan käsittelyn malli relaatioalgebra

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 1 1 Matemaattisesta päättelystä Matemaattisen analyysin kurssin (kuten minkä tahansa matematiikan kurssin) seuraamista helpottaa huomattavasti, jos opiskelija ymmärtää

Lisätiedot

Looginen tietokanta ja transaktiot

Looginen tietokanta ja transaktiot Looginen tietokanta ja transaktiot A. Silberschatz, H. F. Korth & S. Sudarshan: Database System Concepts. Fifth Edition. McGraw-Hill, 2006, sivut 22 23, luvun 1 (introduction) kohta kohta 1.9 (transaction

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

Tiedostorakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1

Tiedostorakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1 Tiedostorakenteet R&G Chapter 9 16.02.06 Tietokannan hallinta, kevät 2006, Jan 1 Tiedostorakenteet Tiedostojen tehokkuutta yhtä kyselyä kohti arvioidaan usein tarvittavien levyhakujen määrällä. kuten levykäsittelyn

Lisätiedot

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää Levyn rakenne Levykössä (disk drive) on useita samankeskisiä levyjä (disk) Levyissä on magneettinen pinta (disk surface) kummallakin puolella levyä Levyllä on osoitettavissa olevia uria (track), muutamasta

Lisätiedot

Relaatioalgebra. Kyselyt:

Relaatioalgebra. Kyselyt: Relaatioalgebra Relaatiomalliin liittyy malli tietokannan käsittelystä Tietokannasta pitää pystyä hakemaan tietoa ja toisaalta tietokantaa on ylläpidettävä Tietokannan käsittelyn malli relaatioalgebra

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

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

Lisätiedot

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö Algoritmit 1 Luento 5 Ti 24.1.2017 Timo Männikkö Luento 5 Järjestetty lista Järjestetyn listan operaatiot Listan toteutus taulukolla Binäärihaku Binäärihaun vaativuus Algoritmit 1 Kevät 2017 Luento 5 Ti

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

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

5. Tapahtumien hallinta. Esim. pankkitilisovelluksen proseduuri tilisiirto(t1, t2, x), joka siirtää x mk tililtä t1 tilille t2:

5. Tapahtumien hallinta. Esim. pankkitilisovelluksen proseduuri tilisiirto(t1, t2, x), joka siirtää x mk tililtä t1 tilille t2: Tietokannan hallinta 1 5. Tapahtumien hallinta Tietokannan hallinta 2 5. Tapahtumien hallinta 5. Tapahtumien hallinta = transaction management (yleistä: E&N, Ch. 19) kaikkien tietokantajärjestelmien keskeinen

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

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa Samanaikaisuuden hallinta Optiot transaktionaalisissa työnkuluissa Sisältö Transaktionaaliset työnkulut Samanaikaisuuden ongelmat Optiot idea käyttökohteet WorkMan Optioiden toteutus Arviointi Transaktionaaliset

Lisätiedot

Transaktioiden samanaikaisuuden hallinta

Transaktioiden samanaikaisuuden hallinta Transaktioiden samanaikaisuuden hallinta C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh & P. Schwartz: ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen... 10 Loki-tiedosto... 11

Lisätiedot

4.3. Matemaattinen induktio

4.3. Matemaattinen induktio 4.3. Matemaattinen induktio Matemaattinen induktio: Deduktion laji Soveltuu, kun ominaisuus on osoitettava olevan voimassa luonnollisilla luvuilla. Suppea muoto P(n) : Ominaisuus, joka joka riippuu luvusta

Lisätiedot

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43 CS-A1150 Tietokannat 15.4.2019 CS-A1150 Tietokannat 15.4.2019 1 / 43 Oppimistavoitteet: tämän luennon jälkeen Tiedät, mitä tarkoitetaan hakemistolla ja mitä hyötyä hakemistosta on. Tiedät, miten voidaan

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

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento

Lisätiedot

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! 345396! killedwhale@kapsi.fi! Henri Nurmi! 345545! henri.nurmi@kapsi.fi!

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! 345396! killedwhale@kapsi.fi! Henri Nurmi! 345545! henri.nurmi@kapsi.fi! Harjoitustyö CSE-A1200 Tietokannat Jasse Lahdenperä 345396 killedwhale@kapsi.fi Henri Nurmi 345545 henri.nurmi@kapsi.fi 1 Ensimmäisen vaiheen ratkaisu ER-Kaavio 2 Relaatiomalli: Loanable(Id, MaximumLoanTime)

Lisätiedot

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint.

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint. Yleiset hakupuut 4 Monitiehakupuu: Binäärihakupuu 0 1 3 5 6 7 8 v k 1 k k 3 v v 3 v 4 k 1 k 3 k 1 k k k 3 d lapsisolmua d 1 avainta Yleinen hakupuu? Tietorakenteet, syksy 007 1 Esimerkki monitiehakupuusta

Lisätiedot

f(x, y) = x 2 y 2 f(0, t) = t 2 < 0 < t 2 = f(t, 0) kaikilla t 0.

f(x, y) = x 2 y 2 f(0, t) = t 2 < 0 < t 2 = f(t, 0) kaikilla t 0. Ääriarvon laatu Jatkuvasti derivoituvan funktion f lokaali ääriarvokohta (x 0, y 0 ) on aina kriittinen piste (ts. f x (x, y) = f y (x, y) = 0, kun x = x 0 ja y = y 0 ), mutta kriittinen piste ei ole aina

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

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Frégier n lause Simo K. Kivelä Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Suorakulmaisen kolmion kaikki kärjet sijaitsevat paraabelilla y = x 2 ; suoran kulman

Lisätiedot

Hakemistorakenteet. R & G Chapter Tietokannan hallinta, kevät 2006, Jan 1

Hakemistorakenteet. R & G Chapter Tietokannan hallinta, kevät 2006, Jan 1 Hakemistorakenteet R & G Chapter 10 16.02.06 Tietokannan hallinta, kevät 2006, Jan 1 Hakemistotyypeistä Hakemistomerkintä sisältää hakemistoavaimen (indexing key) muodostusperustan määrittelemänä tietueesta

Lisätiedot

B + -puut. Kerttu Pollari-Malmi

B + -puut. Kerttu Pollari-Malmi B + -puut Kerttu Pollari-Malmi Tämä monista on alunperin kirjoitettu sksn 2005 kurssille osittain Luukkaisen ja Nkäsen vanhojen luentokalvojen pohjalta. Maaliskuussa 2010 pseudokoodiesits on muutettu vastaamaan

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

Käsitellyt hakemistot (hajautus, ISAM): hakemisto-osa on staattinen eli ei muutu muuten kuin uudelleenorganisoinnissa.

Käsitellyt hakemistot (hajautus, ISAM): hakemisto-osa on staattinen eli ei muutu muuten kuin uudelleenorganisoinnissa. Tietokannan hallinta 35 3. Tietokannan 3.3 Dynaamiset Käsitellyt hakemistot (hajautus, ISAM): hakemisto-osa on staattinen eli ei muutu muuten kuin uudelleenorganisoinnissa. Ajan mittaan epätasapainoa:

Lisätiedot

HELIA 1 (17) Outi Virkki Tiedonhallinta

HELIA 1 (17) Outi Virkki Tiedonhallinta HELIA 1 (17) Luento 4.1 Looginen suunnittelu... 2 Relaatiomalli... 3 Peruskäsitteet... 4 Relaatio... 6 Relaatiokaava (Relation schema)... 6 Attribuutti ja arvojoukko... 7 Monikko... 8 Avaimet... 10 Avain

Lisätiedot

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta Hakemistotyypeistä Hakemistorakenteet R & G Chapter 10 Hakemistomerkintä sisältää hakemistoavaimen (indexing key) muodostusperustan määrittelemänä tietueesta tai tietuejoukosta tuotettu tunnus yleensä

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

Muita transaktioiden hallintamenetelmiä

Muita transaktioiden hallintamenetelmiä Muita transaktioiden hallintamenetelmiä H. Berenson, P. Bernstein, J. Gray, J. Melton, E. O Neil & P. O Neil: A critique of ANSI SQL isolation levels. Proc. of the 1995 ACM SIG- MOD Internat. Conf. on

Lisätiedot

Liitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1

Liitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1 Liitosesimerkki 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 1 Esim R1 R2 yhteinen attribuutti C T(R1) = 10,000 riviä T(R2) = 5,000 riviä S(R1) = S(R2) = 1/10 lohkoa Puskuritilaa = 101 lohkoa 16.02.06

Lisätiedot

B-puu. 3.3 Dynaamiset hakemistorakenteet

B-puu. 3.3 Dynaamiset hakemistorakenteet Tietokannan hallinta 2 3. Tietokannan hakemistorakenteet 3.3 Dynaamiset hakemistorakenteet Käsitellyt hakemistot (hajautus, ISAM): hakemisto-osa on staattinen eli ei muutu muuten kuin uudelleenorganisoinnissa.

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

joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus

joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus DO NOT PRINT THIS DOCUMENT joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus erityisiä relaatioalgebran operaatioita

Lisätiedot

Helsingin yliopisto/tktl Tietokannan hallinta, kevät Harri Laine 1 D B. Transaktionhallinta. Transaktionhallinta. Transaktionhallinta

Helsingin yliopisto/tktl Tietokannan hallinta, kevät Harri Laine 1 D B. Transaktionhallinta. Transaktionhallinta. Transaktionhallinta (transaction management) on keskeinen tekijä tietokannan samanaikaisen käytön ja virheistä toipumisen kannalta. Useat prosessit voivat käsitellä tietokantaa samanaikaisesti Jos tietokoneessa on vain yksi

Lisätiedot

Peliteoria luento 1. May 25, 2015. Peliteoria luento 1

Peliteoria luento 1. May 25, 2015. Peliteoria luento 1 May 25, 2015 Tavoitteet Valmius muotoilla strategisesti ja yhteiskunnallisesti kiinnostavia tilanteita peleinä. Kyky ratkaista yksinkertaisia pelejä. Luentojen rakenne 1 Joitain pelejä ajanvietematematiikasta.

Lisätiedot

Transaktiopalvelimen rakenne, s. 43. Levyjaksot, sivut ja tiedostot, s. 46. Tietokantasivujen puskurointi, s. 53. Tietokannan tila, s. 57.

Transaktiopalvelimen rakenne, s. 43. Levyjaksot, sivut ja tiedostot, s. 46. Tietokantasivujen puskurointi, s. 53. Tietokannan tila, s. 57. Fyysinen tietokanta A. Silberschatz, H. F. Korth & S. Sudarshan: Database System Concepts. Fifth Edition. McGraw-Hill, 2006, sivut 24 26, luvun 1 (introduction) kohta 1.11 (database architecture); sivut

Lisätiedot

2. Tietokannan tallennusrakenteet

2. Tietokannan tallennusrakenteet Tietokannan hallinta 1 2. Tietokannan tallennusrakenteet 2. Tietokannan tallennusrakenteet 2.1 Levymuisti ja sen käyttö Muistilaitteiden hierarkia: ainakin keskusmuisti levymuisti (+ muita tukimuisteja,

Lisätiedot

Luento 2: Tiedostot ja tiedon varastointi

Luento 2: Tiedostot ja tiedon varastointi HELIA 1 (19) Luento 2: Tiedostot ja tiedon varastointi Muistit... 2 Päämuisti (Primary storage)... 2 Apumuisti (Secondary storage)... 2 Tiedon tallennuksen yksiköitä... 3 Looginen taso... 3 Fyysinen taso...

Lisätiedot

5.2 Samanaikaisuuden hallinta

5.2 Samanaikaisuuden hallinta Tietokannan hallinta 29 5. Tapahtumien hallinta Tietokannan hallinta 30 5. Tapahtumien hallinta 5.2 Samanaikaisuuden hallinta Tietokannalla on tyypillisesti useita samanaikaisia käyttäjiä (ohjelmia/ihmisiä).

Lisätiedot

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

D B. Transaktionhallinta - samanaikaisuus Tietokannalla on tyypillisesti useita samanaikaisia käyttäjiä (prosesseja). On toivottavaa, että yhdenkään käyttäjän toiminta ei hidastuisi kohtuuttomasti, vaikka muita käyttäjiä olisi runsaastikin yhdenkään

Lisätiedot

Helsingin yliopisto/ tktl D Tietokantojen perusteet, s 2000 Relaatioalgebra. Harri Laine 1. Relaatioalgebra.

Helsingin yliopisto/ tktl D Tietokantojen perusteet, s 2000 Relaatioalgebra. Harri Laine 1. Relaatioalgebra. Tietokantaoperaatiot tiedon haku kyselyt miten märitellään haettava tieto ylläpito-operaatiot lisäys, poisto, muuttaminen Kyselyt: lähtökohtana tietokannan tila joukkona relaatioita kyselyn tuloksena yksi

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 29.3.2016 CSE-A1200 Tietokannat 29.3.2016 1 / 40 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan relaatioiden (taulujen) määrittelyt kirjoitetaan SQL:llä. Osaat

Lisätiedot

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI TIETOJEN MALLINNUS NORMALISOINTI HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI DOCENDO (2003, 2005) LUKU 5 JOUNI HUOTARI & ARI HOVI SUUNNITTELUPUTKI Käyttäjien näkemykset Näytöt, ikkunat

Lisätiedot

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi 5. Luento: Rinnakkaisuus ja reaaliaika Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Perusongelmat Jako prosesseihin Reaaliaika Rinnakkaisuus Rinnakkaisuus tarkoittaa tässä yhteydessä useamman kuin yhden

Lisätiedot

Cabas liitännän käyttö AutoFutur ohjelmassa 4.1.2012

Cabas liitännän käyttö AutoFutur ohjelmassa 4.1.2012 Cabas liitännän käyttö AutoFutur ohjelmassa 4.1.2012 Liitännän aktivointi Liitäntä on ohjelma lisämoduuli. Ensin asetetaan käyttöön FuturSoftilta saatu Liitäntä WinCabas rekisteröintikoodi. Mennään kohtaan

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

D B. Tiedostojen käsittely

D B. Tiedostojen käsittely Tietokantojen tietoja säilytetään yleensä apumuistissa, lähinnä levymuisteissa Apumuistiin tallentamisen merkittäviä etuja keskusmuistiin nähden ovat tiedon säilyvyys (virtakatkon yli) säilytyskapasiteetin

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

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla. HY / Avoin ylioisto Johdatus yliopistomatematiikkaan, kesä 05 Harjoitus 6 Ratkaisut palautettava viimeistään tiistaina.6.05 klo 6.5. Huom! Luennot ovat salissa CK maanantaista 5.6. lähtien. Kurssikoe on

Lisätiedot

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Vastaavuus puolestaan on erikoistapaus relaatiosta.

Lisätiedot

1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi.

1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi. Algoritmien DP ja MF vertaileminen tapahtuu suoraviivaisesti kirjoittamalla kummankin leskimääräinen kustannus eksplisiittisesti todennäköisyyksien avulla. Lause T MF ave = 1 + 2 1 i

Lisätiedot

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö Algoritmit 2 Luento 3 Ti 21.3.2017 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2017 Luento 3 Ti 21.3.2017

Lisätiedot

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:

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

D B. Harvat hakemistot

D B. Harvat hakemistot Harvat hakemistot Harvassa hakemistossa on ei ole hakemistomerkintöjä jokaista tietuetta kohden vaan yksi merkintä jotain isompaa kokonaisuutta esimerkiksi sivua tai sivujoukkoa (esim. saman uran sivut)

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

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 12.4.2016 CSE-A1200 Tietokannat 12.4.2016 1 / 42 Oppimistavoitteet: tämän luennon jälkeen Tiedät, mitä tarkoitetaan hakemistolla ja mitä hyötyä hakemistosta on. Tiedät, miten voidaan

Lisätiedot

finnish BOI 2015, päivä 1. Muistiraja: 256 MB. 30.04.2015

finnish BOI 2015, päivä 1. Muistiraja: 256 MB. 30.04.2015 Tehtävä: BOW Keilaus finnish BOI 0, päivä. Muistiraja: 6 MB. 30.04.0 Jarkka pitää sekä keilauksesta että tilastotieteestä. Hän on merkinnyt muistiin muutaman viimeisimmän keilapelin tulokset. Valitettavasti

Lisätiedot