Tietokantarakenteet ja -algoritmit 3. harjoitus

Samankaltaiset tiedostot
Tietokantarakenteet ja -algoritmit Harjoitukset 1-12

Transaktioiden peruutus ja tietokannan elvytys häiriöstä

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

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

Lokin ylläpito ja puskurinhallinta

Tietokantarakenteet ja -algoritmit 6. harjoitus

Sivupalvelin- ja yhteislevyjärjestelmät

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

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

D B. Transaktionhallinta

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

Muita transaktioiden hallintamenetelmiä

T Transaktionhallinta tietokantajärjestelmissä

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

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

Hajautettujen transaktioiden hallinta

Looginen tietokanta ja transaktiot

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

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

D B. Tietokannan hallinta kertaus

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

Algoritmit 1. Luento 5 Ti Timo Männikkö

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

Transaktioiden eristyvyys

Algoritmit 1. Luento 9 Ti Timo Männikkö

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

VARASTOINTI / INVENTOINTI

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

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

Algoritmit 2. Luento 10 To Timo Männikkö

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

D B. Tiedostojen käsittely

KauppiasExtranet -käyttöohje verkkokaupalle

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.

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 3: Jatkuvuus

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

Maksuturva-palvelun rajapintakuvaus verkkokaupalle / MAKSUN PERUUTUS

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

Transaktioiden samanaikaisuuden hallinta

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.

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

2017 = = = = = = 26 1

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.

Ceriffi Check -sovellusohjeistus

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

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

Algoritmit 2. Luento 10 To Timo Männikkö

4.3. Matemaattinen induktio

HELIA 1 (14) Outi Virkki Tiedonhallinta

Algoritmit 1. Luento 6 Ke Timo Männikkö

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

811120P Diskreetit rakenteet

Funktiot. funktioita f : A R. Yleensä funktion määrittelyjoukko M f = A on jokin väli, muttei aina.

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

HELIA 1 (17) Outi Virkki Tiedonhallinta

TAMPUURI-käyttäjäpäivät 2014

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

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

1. KÄYTTÖKONTEKSTI. jamkad VAATIMUSMÄÄRITTELY. Liite1_Vaatimusmaarittely_Elainklinikka.doc Filename: Last saved:

Algoritmit 1. Luento 7 Ti Timo Männikkö

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

Algoritmit 1. Luento 13 Ti Timo Männikkö

Lyhenteet Siirtoprosessin vaiheet (ja vastaavat viestit) NPO Siirtopyyntö NPOC Siirtohyväksyntä NPC Siirtovahvistus SC-NOTICE SD-NOTICE

Tietokanta (database)

Ennakkotehtävän ratkaisu

a ord 13 (a)

Miten osoitetaan joukot samoiksi?

Ohje 2 (6) Dnro LIVI/996/ /2015

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

RADAR - RANDOM DATA GENERATOR

2. Minkä joukon määrittelee kaava P 0 (x 0 ) P 1 (x 0 ) mallissa M = ({0, 1, 2, 3}, P M 0, P M 1 ), kun P M 0 = {0, 1} ja P M 1 = {1, 2}?

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 6 (8 sivua) OT. 1. a) Määritä seuraavat summat:

10 Matriisit ja yhtälöryhmät

T Testitapaukset TC-1

2 Funktion derivaatta

Algoritmit 1. Luento 4 Ke Timo Männikkö

Kuljetustehtävä. Materiaalia kuljetetaan m:stä lähtöpaikasta n:ään tarvepaikkaan. Kuljetuskustannukset lähtöpaikasta i tarvepaikkaan j ovat c ij

Algoritmit 2. Luento 5 Ti Timo Männikkö

Tietokantojen suunnittelu, relaatiokantojen perusteita

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

Transaktionhallinta. Transaktionhallinta. Transaktionhallinta. R & G Chapter 17

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Matriisilaskenta Luento 12: Vektoriavaruuden kannan olemassaolo

Johdatus matematiikkaan

Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Relaation ominaisuuksia. Ominaisuuksia koskevia lauseita Sulkeumat. Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Vapaus. Määritelmä. Vektorijono ( v 1, v 2,..., v k ) on vapaa eli lineaarisesti riippumaton, jos seuraava ehto pätee:

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

f (28) L(28) = f (27) + f (27)(28 27) = = (28 27) 2 = 1 2 f (x) = x 2

Tietokantakurssit / TKTL

HELIA 1 (15) Outi Virkki Tiedonhallinta

Versionhallinta MIKSI?

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

Transkriptio:

Tietokantarakenteet ja -algoritmit 3. harjoitus Malliratkaisut 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 {(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) = 108 107, operaation I[x,u] tulos on sivulla. ul(p). RecLSN(p) = 108 + 1 = 109. 108: 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ä. 1

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 UndoNextLSN:ä 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 > 2

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

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

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

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

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

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 analyysija 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). 8

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