Transaktioiden peruutus ja tietokannan elvytys häiriöstä

Koko: px
Aloita esitys sivulta:

Download "Transaktioiden peruutus ja tietokannan elvytys häiriöstä"

Transkriptio

1 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 rollbacks using write-ahead logging. ACM Transactions on Database Systems 17:1 (1992), ; kohdat 3 (overview of ARIES), 5.2 (total or partial rollbacks), 5.3 (transaction termination), 5.4 (checkpoints), 6 (restart processing) ja 9 (nested top actions). A. Silberschatz, H. F. Korth & S. Sudarshan: Database System Concepts. Fifth Edition. McGraw-Hill, 2006; sivut , luvun 17 (recovery system) kohta 17.1 (failure classification); sivut , kohdat (transaction rollback), (checkpoints), (restart recovery), (fuzzy checkpointing) ja kohdan (ARIES) alakohdat (recovery algorithm) ja (other features). 121

2 Transaktion keskeytys ja peruutus, s Käänteisoperaatioiden suoritus, s Transaktion osittaisperuutus, s Järjestelmähäiriöt, s Päivitettyjen sivujen taulu, s Tarkistuspisteet, s Sumea tarkistuspiste, s ARIES-elvytysalgoritmi, s Elvytyksen analyysivaihe, s Elvytyksen toistovaihe, s Elvytyksen peruutusvaihe, s Rakennemuutosten käsittely, s

3 Transaktion keskeytys ja peruutus Normaalin transaktionkäsittelyn aikana yksittäinen transaktio voi keskeytyä (1) transaktiota tuottavan palvelinprosessin säikeen kaaduttua tai (2) sovellusprosessin pyydettyä itse transaktion keskeytystä SQLlauseella rollback tai (3) kun järjestelmä joutuu keskeyttämään transaktion lukkiumatilanteessa tai kun sovellusprosessi (tai yhteys siihen) näyttää kaatuneen. Tapauksissa (1) ja (3) järjestelmän prosessien valvontaprosessi suorittaa transaktion peruutuksen vaatimat toimenpiteet tai käynnistää uuden säikeen transaktion peruutusvaiheen suorittamista varten. Tapauksessa (2) peruutuksen vaatimat toimenpiteet sisältyvät rollbacklauseen suoritukseen transaktiota tuottavassa palvelinprosessin säikeessä. Kaikissa tapauksissa transaktion peruutus voidaan toteuttaa lokin sekä transaktionhallinnan ylläpitämien keskusmuistitietorakenteiden (aktiivisten transaktioiden taulun) avulla. 123

4 SQL:n rollback-lauseen suoritus etenevässä transaktiossa T : Rollback(T ) { abort(t ); r := get-log-record(undo-next-lsn(t )); while (r n : T,B ) { if (r = n : T,I, p,i,x,v,n ) undo-insert(n,t, p,i,x,n ) else if (r = n : T,D, p,i,x,v,n ) undo-delete(n,t, p,x,v,n ) else if (r = n : T,S[P],n ) Undo-Next-LSN(T ) := n ; r := get-log-record(undo-next-lsn(t )); } commit(t ). }. 124

5 Transaktion T keskeytysoperaation A toteutus: Abort(T ) { state(t ) := backward-rolling ; log(n, T,A ); }. Kutsu get-log-record(n) palauttaa LSN-arvolla n varustetun lokikirjauksen. Kutsu undo-insert(n,t, p,i,x,n ) suorittaa operaation I 1 [x,v]. Kutsu undo-delete(n,t, p,x,v,n ) suorittaa operaation D 1 [x,v]. Kutsut undo-insert ja undo-delete asettavat transaktiotaulussa Undo- Next-LSN(T ):n arvoksi n :n. 125

6 Käänteisoperaatioiden suoritus Peruuntuvan tai osittaisperuutusta suorittavan transaktion T käänteisoperaatiot suoritetaan käyttäen argumentteina T :n vastaavien etenemisoperaatioiden lokikirjauksia. Operaation o[ x] käänteisoperaation o 1 [ x] suoritusta yritetään ensin fyysisesti, so. suoraan sille sivulle, jolle o aikoinaan suoritettiin. Tämän sivun tunniste löytyy o:n lokikirjauksesta. Mikäli fyysinen peruutus ei ole mahdollista, turvaudutaan loogiseen peruutukseen: käänteisoperaation suorituksen aluksi tietokantarakenteesta etsitään operaation kohteen nykyinen sijaintisivu. 126

7 Käänteisoperaation I 1 [x,v] suorituksessa monikon (x,v) nykyinen sijaintisivu q haetaan esiin ja kirjoitussalvataan kutsulla find-page-for-delete(q, x), joka myös suorittaa tarpeelliset rakennemuutokset sen varmistamiseksi, ettei sivu jää monikon poistosta liian vajaaksi. Käänteisoperaation D 1 [x,v] suorituksessa avaimen x peittävä tietosivusivu q haetaan esiin ja kirjoitussalvataan kutsulla find-page-for-insert(q, x, v), joka myös suorittaa tarpeelliset rakennemuutokset sen varmistamiseksi, että sivulla on tilaa monikolle. 127

8 Transaktion T tietosivulle p tietuepaikkaan i suorittaman etenemisoperaation I[x,v] käänteisoperaation I 1 [x,v] suoritus, kun operaation I[x,v] lokikirjauksen LSN = n ja Undo-Next-LSN = n : Undo-insert(n,T, p,i,x,n ) { wl(p); if (Page-LSN(p) n ja lisäksi joko p ei ole tietosivu tai p ei sisällä monikkoa (x,v) tai alivuotaisi sen poistosta) { ul(p); find-page-for-delete(q, x); p := q; } poista monikko (x,v) sivulta p sen sijaintipaikasta j; log(m, T,I 1, p, j,n ); Page-LSN(p) := m; ul(p); Undo-Next-LSN(T ) := n ; }. 128

9 Transaktion T tietosivulle p suorittaman etenemisoperaation D[x,v] käänteisoperaation D 1 [x,v] suoritus, kun operaation D[x,v] lokikirjauksen LSN = n ja Undo-Next-LSN = n : Undo-delete(n,T, p,x,v,n ) { wl(p); if (Page-LSN(p) n ja lisäksi joko p ei ole tietosivu tai p ei peitä avainta x tai siinä ei ole tilaa monikolle (x,v)) { ul(p); find-page-for-insert(q, x, v); p := q; } lisää monikko (x,v) sivulle p vapaaseen tietuepaikkaan j; log(m, T,D 1, p, j,x,v,n ); Page-LSN(p) := m; ul(p); Undo-Next-LSN(T ) := n ; }. 129

10 Transaktion osittaisperuutus Peruutuspisteen P asetus transaktiossa T (operaation S[P] toteutus): Set-savepoint(T,P) { log(n, T,S[P],n ), missä n = Undo-Next-LSN(T ); Undo-Next-LSN(T ) := n; }. Osittaisperuutuksen aloitus transaktiossa T (operaation A[P] toteutus): Abort-to-savepoint(T, P): log(n, T, A[P] ). }. Osittaisperuutuksen päättäminen: Complete-rollback-to-savepoint(T,P) { log(n, T,C[P] ); }. 130

11 SQL-lauseen rollback to savepoint P toteutus transaktiossa T : Rollback-to-savepoint(T,P) { abort-to-savepoint(t, P); r := get-log-record(undo-next-lsn(t )); while (r n : T,S[P],n ) { if (r = n : T,I, p,i,x,v,n ) undo-insert(n,t, p,i,x,n ) else if (r = n : T,D, p,i,x,v,n ) undo-delete(n,t, p,x,v,n ) else if (r = n : T,S[P ],n jollakin P P) Undo-Next-LSN(T ) := n ; r := get-log-record(undo-next-lsn(t )); } complete-rollback-to-savepoint(t, P); }. 131

12 Järjestelmähäiriöt Tietokantapalvelin voi romahtaa (crash) laitteiston tai virtalähteen toimintahäiriöstä tai tietokannan hallintajärjestelmässä tai käyttöjärjestelmässä esiintyvästä ohjelmistovirheestä. Järjestelmän romahtamiseen johtaville häiriöille on yhteistä, että keskusmuistin sisältö katoaa: palvelinprosessit ja järjestelmäprosessit kaatuvat ja tietokantapuskurin sisältö samoin kuin tietokannan hallinnassa tarvittavien keskusmuistirakenteiden sisältö menetetään. Järjestelmän romahtaminen ei kuitenkaan vikaannuta pysyvän muistin (levymuistin) sisältöä. 132

13 Järjestelmän romahtaminen voidaan hoitaa lokiperustaisella elvytyksellä: 1. Tietokannan levyversiosta ja levylle ehtineistä lokikirjauksista palautetaan tietokannan tila sellaiseksi kuin se oli silloin, kun lokin viimeinen levylle ehtinyt kirjaus tehtiin. 2. Häiriötilanteessa aktiivisena olleet etenevät transaktiot keskeytetään ja peruutetaan ja peruuntuvien transaktioiden peruutus saatetaan päätökseen. Seuraavassa tarkastelemme lokiperustaista elvytystä järjestelmän romahtamisesta. Oletamme, ettei levyhäiriöitä esiinny. Tämän mukaisesti oletamme jokaisen tietokantasivun säilyvän fyysisesti eheänä levylle viennissä. 133

14 Päivitettyjen sivujen taulu Puskurinhallitsimen ylläpitämissä keskusmuistitietorakenteissa on tieto siitä, mitkä sivut ovat puskurissa, mille prosesseille ne naulittu ja salvattu ja mitä sivuja on päivitetty. Kustakin kirjoitussalvattavasta sivusta p talletetaan päivitettyjen sivujen tauluun (modified-page table, dirty-page table) eli lyhyesti sivutauluun (page table) seuraavat tiedot: (1) sivun p tunniste sekä (2) arvo Rec-LSN (recovery LSN), joka ilmoittaa sen kohdan lokista, josta lähtien voi olla sivulle p kirjattuja päivityksiä, jotka eivät mahdollisesti vielä ole sivun p levyversiossa. Kun puskuroitua sivua p ensi kerran päivitetään sitten levyltä tuonnin (so. kun p:n puskurinohjauslohkon päivitysbitti ensi kerran asetetaan), niin asetetaan sivutaulussa p:n Rec-LSN:ksi kyseisen päivityksen lokikirjauksen LSN. 134

15 Levyltä puskuriin tuodulle ja ensi kertaa kirjoitussalvattavalle sivulle p perustetaan tietue (p,rec-lsn = n), missä n on lokin loppu eli seuraavaksi tuotettavan lokikirjauksen LSN. Kun sivu p on viety puskurista levylle, poistetaan p:n tiedot sivutaulusta. Sivutaulu toteutetaan tehokkaana keskusmuistitietorakenteena (hajautus sivun tunnisteella). 135

16 Tarkistuspisteet Älä pakota -käytäntöä sovellettaessa voi puskuriin kertyä paljon sivuja, joita ei niiden korkean käyttöasteen takia koskaan viedä levylle ja joihin kertyy monien sitoutuneiden transaktioiden päivityksiä. Näiden sivujen levyversiot saattavat siten pahasti vanhentua: levyversion Page-LSN on paljon pienempi kuin sivuun liittyvän tuoreimman lokikirjauksen LSN (= sivun puskuriversion Page-LSN). Päivitettyjen sivujen taulun sivujen Rec-LSN-arvot jäätyvät osoittamaan varhaisia kohtia lokissa. Niiden myötä jäätyy myös häiriöstä elvytyksen toistovaiheen aloituskohdan osoittava LSN-arvo Redo-LSN, joka on Rec-LSN-arvojen minimi (tai sitä aikaisempi). Toisto-operaatioihin kuluu silloin paljon aikaa. Elvytysprosessia voidaan nopeuttaa ottamalla silloin tällöin (tyypillisesti 5 10 minuutin välein) tarkistuspiste (checkpoint). 136

17 Täydellinen tarkistuspiste (complete checkpoint) voidaan ottaa seuraavalla kutsulla: Take-complete-checkpoint() { log(n, begin-complete-checkpoint ); for (jokainen päivitettyjen sivun taulun sivu p) { rl(p); flush-onto-disk(p); poista p:n tiedot päivitettyjen sivujen taulusta; ul(p); } log(n, end-complete-checkpoint ); flush-the-log(); tallenna Begin-Checkpoint-LSN = n tiettyyn paikkaan levylle; }. 137

18 Kutsu flush-onto-disk(p) vie sivun p levylle WAL-käytännön mukaisesti (siis lokin ensin) ja merkitsee p:n päivittämättömäksi. Kutsu flush-the-log() vie lokipuskurissa olevat, vielä levylle viemättömät lokikirjaukset levylle. Transaktionkäsittely voi jatkua normaalisti tarkistuspisteen ottamisen kanssa rinnan. Tästä syystä päivitettyjen sivujen joukko voi laajentua ennen kuin for-silmukassa päivitetyiksi havaitut sivut on kaikki saatu viedyksi levylle. Häiriöstä elvytyksen toistovaiheen aloituskohtana Redo-LSN voidaan käyttää viimeksi otetun, valmiiksi ehtineen tarkistuspisteen aloituskirjauksen LSN:ää. 138

19 Täydellisen tarkistuspisteen ottaminen voi olla työläs operaatio ja se voi hidastaa tuntuvasti normaalia transaktionkäsittelyä. Olkoon puskurialtaan koko sivua á 8 KB. Oletetaan, että tarkistuspisteen ottohetkellä 50 % sivuista on päivitetty. On siis vietävä levylle sivua. Pahimmassa tapauksessa puskurinhallitsin käy puskurialtaan läpi peräkkäisjärjestyksessä ja vie levylle jokaisen päivitetyksi merkityn sivun. Keskimääräisellä 15 ms:n hakuajalla tämä vie kaikkiaan 37,5 sekuntia. Tämä järjestelmän normaalia toimintaa hidastava operaatio toistuu joka viides tai kymmenes minuutti. Asiantilaa voidaan korjata hieman järjestämällä sivujen numerot ennen levylle vientiä, jolloin säästetään hakuvarren liikkeissä. Voitaisiin myös pitää yllä taustaprosessia, joka vie päivitettyjä sivuja levylle, jolloin varsinaista tarkistuspistettä otettaessa on vähemmän kirjoitettavaa. 139

20 Sumea tarkistuspiste Täydellistä tarkistuspistettä kevyempi menettely tehostaa elvytyksen toistovaihetta on epäsuora tarkistuspiste (indirect checkpoint) eli sumea tarkistuspiste (fuzzy checkpoint), jossa vain osa päivitetyistä sivuista viedään levylle. Minimaalisimmillaan sumeassa tarkistuspisteessä ei viedä yhtään sivua levylle, vaan ainoastaan kirjataan lokiin vedos päivitettyjen sivujen taulusta sekä (peruutusvaiheen helpottamiseksi) vedos myös transaktiotaulusta. 140

21 Sumeassa tarkistuspisteessä kirjataan lokiin begin-checkpoint. transaction-table{(t 1,s 1,n 1 ),...,(T k,s k,n k )}. page-table{(p 1,r 1 ),...,(p m,r m )}. end-checkpoint. Tässä s i on transaktion T i tila (forward-rolling/backward-rolling), n i on T i :n Undo-Next-LSN ja r j on päivitetyn sivun p j Rec-LSN. Sumeassa tarkistuspisteessä ei välttämättä pakoteta yhtään sivua levylle, ei edes lokitiedoston sivuja. Kun end-checkpoint-kirjaus aikanaan tulee viedyksi levylle, kirjoitetaan vastaavan begin-checkpoint-kirjauksen LSN tiettyyn paikkaan vakaassa muistissa. 141

22 Transaktiot voivat vapaasti tehdä päivityksiä ja tuottaa lokikirjauksia tarkistuspisteen tuottamien kirjausten väliin. Sivutaulu ja transaktiotaulu täytyy suojata lukusalvoin vedostettaessa niitä lokiin. Usein ja pitkään käytetty sivu voi pysyä puskurissa usean tarkistuspisteen yli, jolloin sen Rec-LSN jäädyttää toistovaiheen aloituskohdan Redo-LSN. Päivitettyjä sivuja on syytä viedä levylle taustaprosessia käyttäen. Päivitetty sivu, jota ei ole viety levylle sitten edellisen tarkistuspisteen, kannattaa määrätä levylle vietäväksi seuraavan tarkistuspisteen yhteydessä (ennen päivitettyjen sivujen taulun vedostusta). Joka tapauksessa on syytä varmistaa, että kussakin tarkistuspisteessä Redo-LSN-arvo edistyy. Tämä saadaan aikaan viemällä levylle muutama pienimmillä Rec- LSN-arvoilla varustettu päivitetty sivu. 142

23 ARIES-elvytysalgoritmi ARIES-algoritmi (Algorithm for Recovery and Isolation Exploiting Semantics) tietokantajärjestelmän häiriöstä elvyttämiseksi sisältää seuraavat vaiheet: 1. Analyysivaihe. 2. Toistovaihe. 3. Peruutusvaihe. 4. Tarkistuspisteen otto. ARIES-algoritmi edellyttää, että puskurinhallitsin noudattaa WALkäytäntöä sekä normaalin transaktionkäsittelyn että elvytyksen aikana. Muutoin ei puskurointikäytännölle aseteta rajoituksia. Likaisia sivuja on lupa varastaa puskurista ja päivitettyjä sivuja ei ole tarpeen pakottaa levylle transaktion sitoutumisen yhteydessä. ARIES sallii siis vapaimmat mahdolliset puskurointikäytännöt: varasta ja älä pakota. 143

24 Elvytyksen analyysivaihe Analyysivaiheessa (analysis pass) selvitetään lokista, mitkä transaktiot olivat aktiivisina ja mitkä sivut (mahdollisesti) olivat päivitettyinä puskurissa häiriöhetkellä. Vaiheen syötteenä on viimeisimmän valmiiksi ehtineen (sumean) tarkistuspisteen aloituskirjauksen LSN (Begin-Checkpoint-LSN). Vaiheen tulosteena on aktiivisten transaktioiden taulu, päivitettyjen sivujen taulu sekä arvo Redo-LSN, josta lähtien toistovaiheen pitää aloittaa lokin selaus. Analyysivaiheessa lokia selataan begin-checkpoint-kirjauksesta lokin loppuun. 144

25 Selauksessa käytetään kutsua get-next-log-record(n), joka palauttaa LSN-arvoa n seuraavalla LSN-arvolla varustetun lokikirjauksen. Transaktiotaulu ja sivutaulu alustetaan tarkistuspisteen lokikirjauksista. Kun selauksessa tavataan sivulle p kirjattu päivitys, missä p:tä ei löydy sivutaulusta, viedään p:n tunniste tauluun ja asetetaan sen Rec- LSN:ksi kyseisen lokikirjauksen LSN. Selauksen lopuksi asetetaan Redo-LSN:ksi minimi sivutaulun sivujen Rec-LSN-arvoista. Analyysivaiheessa ei lainkaan lueta eikä kirjoiteta tietokantasivuja, vaan ainoastaan luetaan lokia ja muodostetaan keskusmuistirakenteita (transaktiotaulu ja sivutaulu). Analyysivaiheen algoritmi (epätäydellisenä; rakennemuutosten lokikirjausten käsittely puuttuu): 145

26 Analysis-pass() { r := get-next-log-record(begin-checkpoint-lsn); while (r on lokikirjaus) { if (r = n : transaction-table,{...} ) alusta transaktiotaulu; else if (r = n : page-table,{...} ) alusta sivutaulu; else if (r = n : T,B ) vie transaktiotauluun tietue (T, forward-rolling, Undo-Next-LSN = n); else if (r = n : T,(I D), p,... ) { Undo-Next-LSN(T ) := n; if (p ei sivutaulussa) vie (p,rec-lsn = n) sivutauluun; } else if (r = n : T,A ) state(t ) := backward-rolling else if (r = n : T,(I D) 1, p,...,n ) { Undo-Next-LSN(T ) := n ; if (p ei sivutaulussa) vie (p,rec-lsn = n) sivutauluun; } else if (r = n : T,C ) poista T transaktiotaulusta; else if (r = n : T,S[P],n ) Undo-Next-LSN(T ) := n; r := get-next-log-record(n); } return Redo-LSN = min{n (p, Rec-LSN= n) on sivutaulussa}; }. 146

27 Oletetaan, että häiriön sattuessa lokin sisältö levyllä on seuraava: 101: T 1,B 102: T 1,D, p 1,i 1,x 1,v 1, : begin-checkpoint 104: transaction-table, { (T 1, forward-rolling, Undo-Next-LSN=102)} 105: page-table, {(p 1, Rec-LSN=102)} 106: end-checkpoint 107: T 1,I, p 1,i 1,x 1,v 1, : T 2,B 109: T 1,C 110: T 2,D, p 1,i 1,x 1,v 1, : T 3,B 112: T 3,I, p 2,i 2,x 2,v 2, : T 2,I, p 1, j 1,x 3,v 3, : T 2,A 115: T 2,I 1, p 1, j 1,

28 Analyysivaiheessa lokia selataan tarkistuspisteen aloituskirjauksesta 103 lokin loppuun. Tarkistuspisteen lokikirjauksesta 104 alustetaan transaktiotaulun sisällöksi rivi (T 1, forward-rolling, Undo-Next-LSN=102). Tarkistuspisteen lokikirjauksesta 105 alustetaan sivutaulun sisällöksi rivi (p 1,Rec-LSN = 102). Kirjauksesta 107 (T 1 :n päivitys sivulle p 1 ) päivitetään transaktiotaulussa Undo-Next-LSN(T 1 ) = 107. Sivutaulua ei päivitetä, sillä sivu p 1 on jo siellä. Kirjauksesta 108 (T 2 :n aloituskirjaus) lisätään transaktiotauluun rivi (T 2, forward-rolling, Undo-Next-LSN=108). Kirjaus 109 (T 1 :n sitoutumiskirjaus) aiheuttaa transaktion T 1 tietojen poiston transaktiotaulusta. Taulun sisällöksi jää {(T 2, forward-rolling, Undo-Next-LSN=108)}. 148

29 Kirjauksesta 110 (T 2 :n päivitys sivulle p 1 ) päivitetään transaktiotaulussa Undo-Next-LSN(T 2 ) := 110. Sivutaulua ei päivitetä. Kirjauksesta 111 (T 3 :n aloituskirjaus) lisätään transaktiotauluun rivi (T 3, forward-rolling, Undo-Next-LSN=111). Kirjauksesta 112 (T 3 :n päivitys sivulle p 2 ) päivitetään transaktiotaulussa Undo-Next-LSN(T 3 ) := 112 ja lisätään sivutauluun rivi (p 2,Rec-LSN = 112). Kirjauksesta 113 (T 2 :n päivitys sivulle p 1 ) päivitetään transaktiotaulussa Undo-Next-LSN(T 2 ) := 113. Sivutaulua ei päivitetä. Kirjauksesta 114 (T 2 :n keskeytyskirjaus) muutetaan transaktiotaulussa T 2 :n tilaksi backward-rolling. Kirjauksesta 115 (T 2 :n päivityksen peruutus sivulle p 1 ) päivitetään transaktiotaulussa Undo-Next-LSN(T 2 ) := 110. Sivutaulua ei päivitetä. 149

30 Loki on nyt selattu loppuun. Transaktiotaulun sisältönä on: {(T 2,backward-rolling,Undo-Next-LSN = 110), (T 3,forward-rolling,Undo-Next-LSN = 112)}. Sivutaulun sisältönä on: {(p 1,Rec-LSN = 102),(p 2,Rec-LSN=112)}. Analyysivaiheen lopuksi asetetaan toistovaiheen aloituskohdaksi Redo-LSN := min{102, 112} =

31 Elvytyksen toistovaihe Toistovaihe (redo pass) toistaa historian (repeats history), so. saattaa tietokannan samaan tilaan, jossa se oli häiriöhetkellä. Tarkemmin sanoen toistovaihe palauttaa fyysisen tietokannan (ja siis myös loogisen tietokannan) siihen tilaan, jossa tietokanta oli, kun tuorein ennen häiriötä levylle ehtinyt lokikirjaus tehtiin. Tietokannan tila rekonstruoidaan tietokannan levyversiosta ja lokista. Lokia selataan Redo-LSN:stä lähtien lokin loppuun ja toteutetaan ne lokiin kirjatut päivitykset, jotka eivät olleet ehtineet levylle asti ennen häiriötä. Myös aktiivisten transaktioiden päivitykset toistetaan, vaikka nämä transaktiot elvytyksen peruutusvaiheessa lopulta tulevatkin peruutetuiksi. 151

32 Aina kun lokiselauksessa tavataan transaktion T päivitysoperaation (etenemisoperaation tai käänteisoperaation) lokikirjaus n : T,o, p,i, x,n missä Rec-LSN(p) lokikirjauksen LSN n, naulitaan ja kirjoitussalvataan sivu p ja tutkitaan sen Page-LSN:ää. Jos Page-LSN(p) < n, tiedetään, ettei päivitystä ole sivulla p. Silloin toteutetaan operaatio o[ x] sivulle p paikkaan i ja asetetaan Page-LSN(p) := n. Lopuksi vapautetaan sivun p salpaus ja naulinta. 152

33 Mikäli sivun p päivityskirjauksen LSN n on pienempi kuin Rec- LSN(p), sivua p ei ole tarpeen naulita ollenkaan, vaan päivityskirjaus voidaan ohittaa. Aina kun sivu p joudutaan naulitsemaan ja salpaamaan ensi kerran toistovaiheen aikana (tutkittaessa päivityskirjausta, jonka LSN n Rec-LSN(p)), saatetaan myös ajan tasalle Rec-LSN(p). Tämä tapahtuu asettamalla sivutaulussa Rec-LSN(p) := max{rec-lsn(p), Page-LSN(p) + 1}, missä Page-LSN(p) on sivun levyversioon leimattu LSN ja LSN-arvo Page-LSN(p) + 1 esittää arvoa Page-LSN(p) lähinnä suurempaa LSN-arvoa. 153

34 Menettely tehostaa nyt suoritettavana olevan elvytyksen toistovaihetta. Myöhempänä lokissa voi näet olla samalle sivulle kohdistuneita päivityksiä, joiden lokikirjausten LSN:t ovat sivun ajan tasalle saatettua Rec-LSN:ää pienempiä; näitä sivuja ei nyt tarvitse lainkaan naulita puskuriin. Menettely tehostaa myös myöhempien elvytyskertojen toistovaiheita, koska seuraavaksi otettavassa tarkistuspisteessä vedostettavaan sivutauluun saadaan päivitetyille sivuille ajantasaisemmat Rec-LSNt. Toistovaiheessa ei kirjoiteta mitään lokitietueita. Operaatiot näet toistetaan aina fyysisesti eli samoille sivuille ja samoihin tietuepaikkoihin kuin ne alkujaan suoritettiin; lokissa jo olevat kirjaukset kuvaavat täsmälleen myös operaatioiden toistoa. Toistovaiheen algoritmi (epätäydellisenä; rakennemuutosten lokikirjausten käsittely puuttuu): 154

35 Redo-pass() { r := get-log-record(redo-lsn); while (r on lokikirjaus) { if (r on muotoa n : T,o, p,i, x,n ) if (p on sivutaulussa ja Rec-LSN(p) n) { wl(p); if (p on päivittämätön) Rec-LSN(p) :=max{rec-lsn(p),page-lsn(p) + 1}; if (Page-LSN(p) < n) { if (r = n : T,I, p,i,x,v,n ) lisää (x,v) sivulle p paikkaan i; else if (r = n : T,D, p,i,x,v,n ) poista (x,v) sivulta p paikasta i; else if (r = n : T,I 1, p,i,n ) poista monikko sivulta p paikasta i; else if (r = n : T,D 1, p,i,x,v,n ) lisää (x,v) sivulle p paikkaan i; Page-LSN(p) := n; } ul(p); } r := get-next-log-record(n); } }. 155

36 Esimerkkitapauksessamme elvytyksen toistovaiheessa lokia selataan kirjauksesta Redo-LSN = 102 lähtien loppuun. Oletetaan, että sivun p 1 levyversiossa Page-LSN(p 1 ) = 102 ja että sivun p 2 levyversiossa Page-LSN(p 2 ) < 100. Kirjaus 102: Koska Rec-LSN(p 1 ) = , sivu p 1 joudutaan naulitsemaan ja kirjoitussalpaamaan. Tutkitaan sivun p 1 Page-LSN:ää. Havaitaan, että Page-LSN(p 1 ) = 102. Koska Page-LSN(p 1 ) = , niin operaation D[x 1,v 1 ] tulos on jo sivulla p 1. Asetetaan Rec-LSN(p 1 ) := max{102, } = 103. Vapautetaan sivun p 1 salpaus ja naulinta. 156

37 Kirjaus 107: Koska Rec-LSN(p 1 ) = , sivu p 1 naulitaan ja kirjoitussalvataan. Koska Page-LSN(p 1 ) = 102 < 107, operaation I[x 1,v 1 ] tulos puuttuu sivulta p 1. Lisätään monikko (x 1,v 1 ) sivulle p 1 paikkaan i 1 ja asetetaan Page- LSN(p 1 ) := 107. Vapautetaan sivun p 1 salpaus ja naulinta. Kirjaus 110: Koska Rec-LSN(p 1 ) = , sivu p 1 naulitaan ja kirjoitussalvataan. Koska Page-LSN(p 1 ) = 107 < 110, niin operaation D[x 1,v 1 ] tulos puuttuu sivulta p 1. Poistetaan monikko (x 1,v 1 ) sivulta p 1 paikasta i 1 ja asetetaan Page- LSN(p 1 ) := 110. Vapautetaan sivun p 1 salpaus ja naulinta. 157

38 Kirjaus 112: Koska Rec-LSN(p 2 ) = , sivu p 2 naulitaan ja kirjoitussalvataan. Koska Page-LSN(p 2 ) < 100 < 112, niin operaation I[x 2,v 2 ] tulos puuttuu sivulta p 2. Lisätään monikko (x 2,v 2 ) sivulle p 2 paikkaan i 2 ja asetetaan Page- LSN(p 2 ) := 112. Vapautetaan sivun p 2 salpaus ja naulinta. Kirjaus 113: Koska Rec-LSN(p 1 ) = , sivu p 1 naulitaan ja kirjoitussalvataan. Koska Page-LSN(p 1 ) = 110 < 113, niin operaation I[x 3,v 3 ] tulos puuttuu sivulta p 1. Lisätään monikko (x 3,v 3 ) sivulle p 1 paikkaan j 1 ja asetetaan Page- LSN(p 1 ) := 113. Vapautetaan sivun p 1 salpaus ja naulinta. 158

39 Kirjaus 115: Koska Rec-LSN(p 1 ) = , sivu p 1 naulitaan ja kirjoitussalvataan. Koska Page-LSN(p 1 ) = 113 < 115, niin operaation I 1 [x 3,v 3 ] tulos puuttuu sivulta p 1. Poistetaan monikko sivulta p 1 paikasta j 1 ja asetetaan Page- LSN(p 1 ) := 115. Vapautetaan sivun p 1 salpaus ja naulinta. Toistovaihe on nyt päätöksessä. Sivulla p 2 on monikko (x 2,v 2 ) ja avaimilla x 1 ja x 3 varustetut monikot puuttuvat tietokannasta, kuten oli asianlaita häiriön sattuessa. 159

40 Elvytyksen peruutusvaihe Peruutusvaiheessa (undo pass) peruutetaan etenevät transaktiot ja saatetaan päätökseen peruuntuvien transaktioiden peruutus. Transaktiotaulun jokaiselle etenevälle transaktiolle T asetetaan tilaksi backward-rolling ja kirjataan lokiin T,A. Sitten selataan lokia lopusta alkuun päin käyden läpi transaktiotaulun transaktioiden etenemisvaiheiden vielä peruuttamatta olevien päivitysten lokikirjaukset kronologisen järjestyksen käänteisjärjestyksessä. Lokikirjauksista tutkitaan vuorollaan aina se, jonka LSN on sama kuin transaktiotaulun transaktioiden senhetkinen suurin Undo-Next- LSN-arvo. 160

41 Aina kun tavataan päivityskirjaus T,o, p,i, x,n, naulitaan ja kirjoitussalvataan sivu p ja suoritetaan käänteisoperaatio o 1 [ x] sille sivulle p, joka peittää kyseisen avaimen. Käänteisoperaatio suoritetaan samalla tavalla kuin normaalin transaktionkäsittelyn aikana yksittäisen peruuntuvan transaktion käänteisoperaatio. Ensin yritetään suorittaa käänteisoperaatio fyysisesti, mutta jos tämä ei onnistu, suoritetaan käänteisoperaatio loogisesti. Jos lokikirjauksessa mainittu sivu p, jolle etenemisvaiheen operaatio o[ x] aikoinaan suoritettiin, edelleen peittää monikon avainarvon ja käänteisoperaatio o 1 [ x] voidaan suorittaa sivulle p, niin p = p ja operaatio on fyysinen; muutoin p:n salpaus ja naulinta vapautetaan ja käänteisoperaatio suoritetaan loogisesti. 161

42 Käänteisoperaatiosta kirjataan lokiin m : T,o 1, p,i, x,n, missä x on argumenteista x operaation o käänteisoperaation toistossa tarvittava osa. Sivulla p asetetaan Page-LSN(p ) := m, sivun p salpaus ja naulinta vapautetaan ja transaktiotaulussa asetetaan Undo-Next-LSN(T ) := n. Seuraavaksi tutkitaan se lokitietue, jonka LSN on nyt transaktiotaulun suurin Undo-Next-LSN. Aina kun tavataan lokikirjaus T, B, kirjataan lokiin T,C, pakotetaan loki levylle ja poistetaan T :n tiedot transaktiotaulusta. Peruutusvaihe loppuu, kun transaktiotaulussa ei enää ole yhtään transaktiota. Peruutusvaiheessa suoritettavissa päivitysoperaatioissa noudatetaan luonnollisesti WAL-käytäntöä. 162

43 Peruutusvaiheen algoritmi: Undo-pass() { for (jokainen transaktiotaulun etenevä transaktio T ) abort(t ); while (transaktiotaulu on epätyhjä) { n := max{undo-next-lsn(t ) T on transaktiotaulussa}; r := get-log-record(n); if (r = n : T,B ) { log(m, T,C ); flush-the-log(); poista T transaktiotaulusta; } else if (r = n : T,I, p,i,x,v,n ) undo-insert(n,t, p,i,x,n ) else if (r = n : T,D, p,i,x,v,n ) undo-delete(n,t, p,x,v,n ) else if (r = n : T,S[P],n ) Undo-Next-LSN(T ) := n ; } }. 163

44 Esimerkkitapauksessamme elvytyksen peruutusvaihe suoritetaan seuraavasti. Ainoa etenevä transaktio T 3 muutetaan peruuntuvaksi asettamalla transaktiotaulussa sen tilaksi backward-rolling sekä kirjaamalla lokiin keskeytyskirjaus 116: T 3,A. Transaktiotaulun sisältönä on nyt: {(T 2,backward-rolling,Undo-Next-LSN = 110), (T 3,backward-rolling,Undo-Next-LSN = 112)}. Sitten selataan lokia lopusta alkuun päin lähtien kirjauksesta 112 = max{110,112} (transaktiotaulun Undo-Next-LSN:ien maksimi). Kirjaus 112 on T 3 :n sivulle p 2 kohdistuneen operaation I[x 2,v 2 ] kirjaus. Naulitaan ja kirjoitussalvataan sivu p

45 Havaitaan, että avainarvolla x 2 varustettu monikko on edelleen sivulla p 2 ja siellä entisessä paikassaan i 2. Oletetaan, ettei sivu p 2 alivuoda monikon poistosta. Käänteisoperaatio I 1 [x 2,v 2 ] suoritetaan poistamalla monikko (x 2,v 2 ) paikasta (p 2,i 2 ). Kirjataan lokiin korvaava kirjaus 117: T 3,I 1, p 2,i 2,111, asetetaan Page-LSN(p 2 ) := 117, vapautetaan sivun p 2 salpaus ja naulinta ja asetetaan transaktiotaulussa Undo-Next-LSN(T 3 ) := 111. Transaktiotaulun Undo-Next-LSN:ien maksimi on nyt 111, joten seuraavaksi käsitellään lokikirjaus

46 Kirjaus 111 on T 3 :n aloituskirjaus, joten T 3 :n peruutus on saatu päätökseen; kirjataan lokiin peruutuksen päättymiskirjaus 118: T 3,C ja pakotetaan loki levylle. Poistetaan T 3 :n tiedot transaktiotaulusta. Transaktiotaulun sisältönä on nyt {(T 2,backward-rolling,Undo-Next-LSN = 110)}. Seuraavaksi käsitellään siis lokikirjaus 110. Kirjaus 110 on T 2 :n sivulle p 1 kohdistuneen operaation D[x 1,v 1 ] kirjaus. Naulitaan ja kirjoitussalvataan sivu p

47 Havaitaan, että sivu p 1 edelleen peittää avaimen x 1 ja että siellä on tilaa monikolle (x 1,v 1 ). Käänteisoperaatio D 1 [x 1,v 1 ] suoritetaan lisäämällä monikko (x 1,v 1 ) sivulle p 1 paikkaan i 1. Kirjataan lokiin korvaava kirjaus 119: T 2,D 1, p 1,i 1,x 1,v 1,108, asetetaan Page-LSN(p 1 ) := 119, vapautetaan sivun p 1 salpaus ja naulinta ja asetetaan transaktiotaulussa Undo-Next-LSN(T 2 ) := 108. Transaktiotaulun sisältönä on nyt {(T 2,backward-rolling,Undo-Next-LSN = 108)}. Seuraavaksi käsitellään siis lokikirjaus

48 Kirjaus 108 on T 2 :n aloituskirjaus, joten T 2 :n peruutus on saatu päätökseen; kirjataan lokiin peruutuksen päättymiskirjaus 120: T 2,C ja pakotetaan loki levylle. Poistetaan T 2 :n tiedot transaktiotaulusta. Peruutusvaihe päättyy nyt, koska transaktiotaulu on tyhjä. Tietokannassa ei nyt enää ole avainarvolla x 2 varustettua monikkoa, ja avainarvolla x 1 varustettu monikko on (x 1,v 1 ). Looginen tietokanta on siis saatettu tilaan, jossa on ainoastaan sitoutuneen transaktion T 1 tekemät päivitykset. 168

49 Elvytyksen viimeisenä vaiheena otetaan tarkistuspiste. Esimerkkitapauksessamme lokiin kirjataan 121: begin-checkpoint 122: transaction-table, {} 123: page-table, {(p 1, Rec-LSN=103),(p 2, Rec-LSN=112)} 124: end-checkpoint Tämän jälkeen voidaan ryhtyä ottamaan vastaan uusia transaktioita. 169

50 Yhteenvetona todetaan, että lokin sisältö elvytyksen päätteeksi on: 101: T 1,B 102: T 1,D, p 1,i 1,x 1,v 1, : begin-checkpoint 104: transaction-table, { (T 1, forward-rolling, Undo-Next-LSN=102)} 105: page-table, {(p 1, Rec-LSN=102)} 106: end-checkpoint 107: T 1,I, p 1,i 1,x 1,v 1, : T 2,B 109: T 1,C 110: T 2,D, p 1,i 1,x 1,v 1, : T 3,B 112: T 3,I, p 2,i 2,x 2,v 2, : T 2,I, p 1, j 1,x 3,v 3, : T 2,A 115: T 2,I 1, p 1, j 1,110 h ä i r i ö 116: T 3,A 117: T 3,I 1, p 2,i 2, : T 3,C 119: T 2,D 1, p 1,i 1,x 1,v 1, : T 2,C 121: begin-checkpoint 122: transaction-table, {} 123: page-table, {(p 1, Rec-LSN=103),(p 2, Rec-LSN=112)} 124: end-checkpoint 170

51 Rakennemuutosten käsittely Tarkastellaan rakennemuutosta, joka on kirjattu lokiin ainoastaan toistokelpoisella kirjauksella n : S, p 1,..., p k,v 1,...,V l, missä S on rakennemuutoksen nimi, p 1,..., p k rakennemuutoksessa päivitettyjen sivujen tunnisteet ja V 1,...,V l rakennemuutoksen muut argumentit (esim. sivulta toiselle siirrettyjen tietueiden joukkoja). Tällainen on esimerkiksi uuden sivun varausta esittävä kirjaus n: allocate-page-for-heap, s, f, p,q tai B-puun sivun p lapsisivun q halkaisua esittävä kirjaus n: split, s, p,q,x,q,v, missä V sisältää täydeltä sivulta q uudelle sisarussivulle q siirretyt tietueet (puoli sivullista). 171

52 Häiriöstä elvytyksen analyysivaiheessa rakennemuutoksen lokikirjaus käsitellään seuraavasti (lisäys algoritmiin analysis-pass): else if (r = n : S, p 1,..., p k,v 1,...,V l ) for (jokainen i = 1,...,k) if (p i ei sivutaulussa) vie (p i,rec-lsn = n) sivutauluun; 172

53 Häiriöstä elvytyksen toistovaiheessa lokiin kirjatut rakennemuutokset toistetaan tarvittaessa kuten loogisen tietokannan päivityksetkin, kun havaitaan, ettei operaation tulosta ole levyllä. Rakennemuutoksen lokikirjauksen käsittely elvytyksen toistovaiheessa (lisäys algoritmiin redo-pass): else if (r on rakennemuutoskirjaus n : S, p 1,..., p k,v 1,...,V l ) { for (jokainen i = 1,...,k) if (p i on sivutaulussa ja Rec-LSN(p i ) n) { wl(p i ); if (p i on päivittämätön) Rec-LSN(p i ) := max{rec-lsn(p i ), Page-LSN(p i )+1}; if (Page-LSN(p i ) < n) { redo-s-on-page-i(p 1,..., p k,v 1,...,V l ); Page-LSN(p i ) := n; }; ul(p i ); } 173

54 Kutsu redo-s-on-page-i(p 1,..., p k,v 1,...,V l ) tuottaa rakennemuutoksen S tuloksen sivun p i osalta käyttäen argumentteinaan sivun p i senhetkistä sisältöä, sivutunnisteita p 1,..., p k ja argumentteja V 1,...,V l. Esimerkiksi lokikirjauksen n: allocate-page-for-heap, s, f, p,q tapauksessa kutsu redo-allocate-page-for-heap-on-page-1(s, f, p, q) asettaa sivutunnistetta q vastaavan bitin ykköseksi varauskuvaajasivulla s. 174

55 Kun jokainen rakennemuutos voidaan kirjata kokonaisuudessaan yhdellä lokitietueella, WAL-käytäntö takaa, ettei häiriöstä elvytyksen toistovaiheen jälkeen koskaan esiinny tarvetta peruuttaa kesken jääneitä rakennemuutoksia. Rakennemuutoksen lokikirjauksen riittää olla silloin ainoastaan toistokelpoinen. On syytä pyrkiä ratkaisuun, jossa rakennemuutokset täyttävät aina tämän ehdon. Ne sivut, joita rakennemuutos koskee, pidetään naulittuina ja kirjoitussalvattuina puskurissa rakennemuutoksen ajan. Kun rakennemuutos koskettaa vain pientä vakiomäärää sivuja, on näiden yhtäaikainen ja koko rakennemuutoksen ajan kestävä salpaus perusteltua. 175

56 Useita sivuja koskettava rakennemuutos, joka kirjattaisiin usealla lokitietueella ja jossa osa sivuista voitaisiin varastaa puskurista ennen rakennemuutoksen sitoutumista, sitä vastoin jouduttaisiin peruuttamaan, mikäli rakennemuutos ei ole ehtinyt sitoutua ennen häiriötä. Peruutus voisi tapahtua ainoastaan fyysisesti. Rakennemuutos on näet fyysinen operaatio. ARIES/KVL- ja ARIES/IM-menetelmissä (MOHAN 1996) B-puun useaa tasoa koskettava rakennemuutos (sivujen halkaisusarja tai yhdistämissarja) voi häiriötilanteessa jäädä keskeneräiseksi ja joudutaan elvytyksen peruutusvaiheessa peruuttamaan. Normaalin transaktionkäsittelyn kuluessa taataan erityisellä puusalvalla (tree latch), että rakennemuutoksia voi olla samanaikaisesti suorituksessa ainoastaan yksi. Tämä puolestaan takaa, että elvytyksen peruutusvaiheessa loogisesti peruutettavan monikkopäivityksen hakupolku on oikeellinen. 176

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

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

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

Sivupalvelin- ja yhteislevyjärjestelmät

Sivupalvelin- ja yhteislevyjärjestelmät Sivupalvelin- ja yhteislevyjärjestelmät C. Mohan & I. Narang 1994: ARIES/CSA: a method for database recovery in client-server architectures. Proc. of the 1994 ACM SIG- MOD Internat. Conf. on Management

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

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

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

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

Tietokantarakenteet ja -algoritmit Harjoitukset 1-12

Tietokantarakenteet ja -algoritmit Harjoitukset 1-12 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

Lisätiedot

Hajautettujen transaktioiden hallinta

Hajautettujen transaktioiden hallinta Hajautettujen transaktioiden hallinta M. Kifer, A. Bernstein & P. M. Lewis: Database Systems. An Application-Oriented Approach. Complete Version. Pearson Addison Wesley, 2006; sivut 1005 1028, luvun 24

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

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

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

D B. Transaktionhallinta

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

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

[c] What is the difference between a modified page and a dirty page? Mitä eroa on päivitetyllä sivulla ja likaisella sivulla?

[c] What is the difference between a modified page and a dirty page? Mitä eroa on päivitetyllä sivulla ja likaisella sivulla? CS-E4230 Transaction Management in DB Early Spring 2017 Tutorial No 2 (1/5) [0] [a] Why is it a good idea to keep the DB log on a separate disk? Miksi on hyvä pitää tietokannan loki omalla levyllään? [b]writing

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

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

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

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

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

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

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019

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

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

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 2.5.2017 Timo Männikkö Luento 13 Merkkijonon sovitus Horspoolin algoritmi Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys

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

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmi on periaatteellisella tasolla seuraava: Algoritmi on periaatteellisella tasolla seuraava: Dijkstra(V, E, l, v 0 ): S := { v 0 } D[v 0 ] := 0 for v V S do D[v] := l(v 0, v) end for while S V do valitse v V S jolle D[v] on minimaalinen S := S

Lisätiedot

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003 Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003 Matti Nykänen 5. joulukuuta 2003 1 Satelliitit Muunnetaan luennoilla luonnosteltua toteutusta seuraavaksi: Korvataan puusolmun p kentät p. key ja

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

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö Algoritmit 2 Luento 7 Ti 4.4.2017 Timo Männikkö Luento 7 Joukot Joukko-operaatioita Joukkojen esitystapoja Alkiovieraat osajoukot Toteutus puurakenteena Algoritmit 2 Kevät 2017 Luento 7 Ti 4.4.2017 2/26

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

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

HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) ICT03D Tieto ja tiedon varastointi

HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) ICT03D Tieto ja tiedon varastointi HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) SQL-transaktiot Lähes kaikissa tietojärjestelmissä tietojen talletus on toteutettu tietokannoissa, joita käytetään tietokannanhallintajärjestelmien (DBMS) palvelujen

Lisätiedot

Tietohakemisto ja Transaktionkäsittely

Tietohakemisto ja Transaktionkäsittely HELIA TIKO-05 1 (18) Tietohakemisto ja Transaktionkäsittely Tietohakemisto...2 Oraclen tietohakemistonäkymät (osa)...3 Yleiset...3 Taulut...3 Säännöt...3 Näkymät...3 Synonyymit...4 Indeksit...4 Sekvenssit...4

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

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö Algoritmit 2 Luento 12 To 3.5.2018 Timo Männikkö Luento 12 Geneettiset algoritmit Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 2/35 Algoritmien

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

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

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö Algoritmit 2 Luento 10 To 11.4.2019 Timo Männikkö Luento 10 Merkkitiedon tiivistäminen LZW-menetelmä Taulukointi Editointietäisyys Peruutusmenetelmä Osajoukon summa Algoritmit 2 Kevät 2019 Luento 10 To

Lisätiedot

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,

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

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

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

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

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

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia 58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, 10..2014, vastauksia 1. [9 pistettä] (a) Todistetaan 2n 2 + n + 5 = O(n 2 ): Kun n 1 on 2n 2 + n + 5 2n 2 + n 2 +5n 2 = 8n 2. Eli

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö Algoritmit 2 Luento 9 Ti 17.4.2018 Timo Männikkö Luento 9 Merkkitiedon tiivistäminen Huffmanin koodi LZW-menetelmä Taulukointi Editointietäisyys Algoritmit 2 Kevät 2018 Luento 9 Ti 17.4.2018 2/29 Merkkitiedon

Lisätiedot

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö Algoritmit 1 Demot 2 7.-8.2.2018 Timo Männikkö Tehtävä 1 (a) Ei-rekursiivinen algoritmi: etsipienin(t, n) { pnn = t[0]; for (i = 1; i < n; i++) { pnn = min(pnn, t[i]); return pnn; Silmukka suoritetaan

Lisätiedot

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina Hakupuut tässä luvussa tarkastelemme puita tiedon tallennusrakenteina hakupuun avulla voidaan toteuttaa kaikki joukko-tietotyypin operaatiot (myös succ ja pred) pahimman tapauksen aikavaativuus on tavallisella

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

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

OPI-Maksut - Käyttötapaukset

OPI-Maksut - Käyttötapaukset OPIMaksut Käyttötapaukset Toiminnallisuudet ja käyttötapaukset: maksupalvelutoiminnot Toimeksiannon lisääminen Palveluväylä toiminto: Toimeksiannon lisääminen Yleiskuvaus Palveluväylään sallitut asiointisovellukset

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

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö Algoritmit 2 Luento 9 Ti 19.4.2016 Timo Männikkö Luento 9 Merkkitiedon tiivistäminen LZW-menetelmä Taulukointi Editointietäisyys Peruutus Verkon 3-väritys Algoritmit 2 Kevät 2016 Luento 9 Ti 19.4.2016

Lisätiedot

Algoritmit 2. Luento 2 Ke Timo Männikkö

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

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

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen) TKT0001 Tietorakenteet ja algoritmit Erilliskoe 5.1.01, malliratkaisut (Jyrki Kivinen) 1. [1 pistettä] (a) Esitä algoritmi, joka poistaa kahteen suuntaan linkitetystä järjestämättömästä tunnussolmullisesta

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

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

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö Algoritmit 1 Demot 1 31.1.-1.2.2018 Timo Männikkö Tehtävä 1 (a) Algoritmi, joka tutkii onko kokonaisluku tasan jaollinen jollain toisella kokonaisluvulla siten, että ei käytetä lainkaan jakolaskuja Jaettava

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

T Testitapaukset TC-1

T Testitapaukset TC-1 T-76.115 Testitapaukset TC-1 ETL-työkalu ExtraTerrestriaLs / Aureolis Oy Versio Päivämäärä Tekijä Muutos 1.0 18.11.2004 Risto Kunnas Testitapaukset ensimmäistä iteraatiota varten 1.1 26.11.2004 Risto Kunnas

Lisätiedot

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua. A Lista Aikaraja: 1 s Uolevi sai käsiinsä listan kokonaislukuja. Hän päätti laskea listan luvuista yhden luvun käyttäen seuraavaa algoritmia: 1. Jos listalla on vain yksi luku, pysäytä algoritmi. 2. Jos

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

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

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

10. Painotetut graafit

10. Painotetut graafit 10. Painotetut graafit Esiintyy monesti sovelluksia, joita on kätevä esittää graafeina. Tällaisia ovat esim. tietoverkko tai maantieverkko. Näihin liittyy erinäisiä tekijöitä. Tietoverkkoja käytettäessä

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

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? 2013-2014 Lasse Lensu 2 Systeemiohjelmat ovat tietokoneen laitteistoa lähellä olevia ohjelmia,

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

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

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu 832A Tietorakenteet ja algoritmit, 204-205, Harjoitus 7, ratkaisu Hajota ja hallitse-menetelmä: Tehtävä 7.. Muodosta hajota ja hallitse-menetelmää käyttäen algoritmi TULOSTA_PUU_LASKEVA, joka tulostaa

Lisätiedot

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I. Vaihto-ominaisuudella on seuraava intuition kannalta keskeinen seuraus: Olkoot A I ja B I samankokoisia riippumattomia joukkoja: A = B = m jollain m > 0. Olkoon vielä n = m A B, jolloin A B = B A = n.

Lisätiedot

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 13. lokakuuta 2016 Sisällys Harjoitustehtävätilastoa Tilanne 13.10.2016 klo 9:42 passed waiting redo submitters

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

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

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 1.1. (a) Jaettava m, jakaja n. Vähennetään luku n luvusta m niin kauan kuin m pysyy ei-negatiivisena. Jos jäljelle jää nolla, jaettava oli tasan jaollinen. int m,

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

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö Algoritmit 2 Luento 10 To 19.4.2018 Timo Männikkö Luento 10 Peruutusmenetelmä Osajoukon summa Verkon 3-väritys Pelipuut Pelipuun läpikäynti Algoritmit 2 Kevät 2018 Luento 10 To 19.4.2018 2/34 Algoritmien

Lisätiedot

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 26. marraskuuta 2015 Sisällys Tunnistamis- ja jäsennysongelma Olkoon G = (N, Σ, P, S) kontekstiton kielioppi ja

Lisätiedot

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun: Tietorakenteet ja algoritmit, kevät 201 Kurssikoe 1, ratkaisuja 1. Tehtävästä sai yhden pisteen per kohta. (a) Invariantteja voidaan käyttää algoritmin oikeellisuustodistuksissa Jokin väittämä osoitetaan

Lisätiedot

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 6. kesäkuuta 2013 Sisällys Aikataulumuutos Tämänpäiväinen demotilaisuus on siirretty maanantaille klo 14:15 (Ag Delta).

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

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

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

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö Algoritmit 2 Luento 14 Ke 3.5.2017 Timo Männikkö Luento 14 Ositus ja rekursio Rekursion toteutus Kertaus ja tenttivinkit Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 2/30 Ositus Tehtävän esiintymä ositetaan

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