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

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

D B. Transaktionhallinta

Tietokantarakenteet ja -algoritmit 3. harjoitus

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

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

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

Transaktioiden peruutus ja tietokannan elvytys häiriöstä

HELIA 1 (14) Outi Virkki Tiedonhallinta

Lokin ylläpito ja puskurinhallinta

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

Sivupalvelin- ja yhteislevyjärjestelmät

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

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

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

Transaktiot - kertausta

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

Hajautettujen transaktioiden hallinta

Transaktionhallinta. Transaktionhallinta. Transaktionhallinta. R & G Chapter 17

Muita transaktioiden hallintamenetelmiä

Samanaikaisuuden hallinta. tietokantapalvelimessa. Tiedonhallintaa. Alkuper. versio: Jaakko Rantanen Pieniä korjauksia: Jouni Huotari 26.2.

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

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

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

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

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

Tietokantarakenteet ja -algoritmit 6. harjoitus

D B. Tietokannan hallinta kertaus

Tietohakemisto ja Transaktionkäsittely

Tietokantarakenteet ja -algoritmit Harjoitukset 1-12

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

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

Tietokanta (database)

Algoritmit 1. Luento 5 Ti Timo Männikkö

Looginen tietokanta ja transaktiot

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

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

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

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

Ohjelmoinnin perusteet Y Python

D B. Transaktionhallinta - samanaikaisuus

D B. Tiedostojen käsittely

HELIA 1 (15) Outi Virkki Tiedonhallinta

T Transaktionhallinta tietokantajärjestelmissä

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

Algoritmit 1. Luento 6 Ke Timo Männikkö

T Testitapaukset TC-1

1. a) Laadi suoraviivaisesti kyselyä vastaava optimoimaton kyselypuu.

OPI-Maksut - Käyttötapaukset

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

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne

CSE-A1200 Tietokannat

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Algoritmi on periaatteellisella tasolla seuraava:

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

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.

12. Javan toistorakenteet 12.1

- Varaukselle, jolloin saadaan kaikki varaukselle tulostetut laskut ja niille tulleet suoritukset.

11. Javan toistorakenteet 11.1

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

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

HELIA 1 (11) Outi Virkki Tiedonhallinta

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

ORGANISAATION KIRJAUTUMINEN TURVASIRU.FI-PALVELUUN

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

Sisältö. 2. Taulukot. Yleistä. Yleistä

5.2 Samanaikaisuuden hallinta

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

RockID-varastonhallintajärjestelmän käyttöohje. v. 1.0

Sähköinen ajanvaraus Virkailijan ohje Valtiovarainministeriö

CS-A1150 Tietokannat CS-A1150 Tietokannat / 47

Tarkennamme geneeristä painamiskorotusalgoritmia

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Sisältö. 22. Taulukot. Yleistä. Yleistä

Ohjelmoinnin perusteet Y Python

811120P Diskreetit rakenteet

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

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

12. Javan toistorakenteet 12.1

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Luento 2: Tiedostot ja tiedon varastointi

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

Moodle-oppimisympäristö

Sisältö. Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat. Abstrakti tietokantamalli. Tietoalkio ACID. Transaktion tilat. Abstrakti tietokantamalli

Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat

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

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

OHJE KILPIEN LISÄÄMISESTÄ ATJN KILPIVARASTOON

Käyttöjärjestelmät: poissulkeminen ja synkronointi

HYVÄKSILUETTUJEN SUORITUSTEN REKISTERÖIMINEN

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

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

HELIA 1 (14) Outi Virkki Tiedonhallinta

D B. Harvat hakemistot. Harvat hakemistot

Transkriptio:

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 kaatumistilanteessa: T1, T2 & T3 tulee olla pysyviä. T4 & T5 tulee peruuttaa (muutokset eivät näkyviä). crash! 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 2 T1 T2 T3 T4 T5

Häiriötilanteita Tietokonejärjestelmä romahtaa (system crash) laitteisto, ohjelmisto tai tietoliikennevirheen takia. Yleensä keskusmuistin (tietokantapuskurien) sisältöä menetetään. Yksittäisen transaktion suoritus keskeytyy ohjelman poikkeustilanteen (nollalla jako tms.) tai loogisen ohjelmavirheen takia. Käyttäjä voi myös keskeyttää kyselyn suorituksen väkivalloin. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 3

Häiriötilanteita 2 Transaktion suoritus keskeytetään hallitusti; esim. transaktion (proseduurin) koodissa suoritetaan jonkin ehdon seurauksena rollback pyyntö. Jos ei esimerkiksi ei löydy transaktion tarvitsemaa syötettä tai se on virheellinen. Samanaikaisuuden hallinnan alijärjestelmä joutuu keskeyttämään transaktion, jotta muut transaktiot voisivat edetä (lukkiutuma tai jokin lievempi suoritus järjestykseen liittyvä häiriö). 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 4

Häiriötilanteita 3 Levyvirhe on turmellut levyn sisältöä. (harvinaista) Ulkopuolinen häiriötekijä (operointivirhe,, sähkökatko) keskeyttää transaktion. (harvinaista) Yllä olevien kohdalla elvytys voi sisältää edellisen varmuuskopion (ajanhetkeltä t) käyttöönoton; Lokin avulla voidaan mahdollisesti suorittaa uudelleen (redo) hetken t ja häiriöajankohdan välillä suoritetut toiminnot Varmuuskopion ja lokin tulisi olla esim. nauhalla tallessa (levyvirhe ). 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 5

Oletukset Käytetään samanaikaisuudenhallintaa. Oletetaan käytössä olevan tiukka 2PL (strict 2PL). Päivityksissä uusi tieto korvaa vanhan tiedon. Mikä tällöin olisi helppo menetelmä atomisuuden ja pysyvyyden takaamiseksi? 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 6

Puskurisivujen hallinta Pakotetaan jokainen kirjoitus levylle? Huono vasteaika. Takaa pysyvyyden. Varastetaan puskurisivuja sitoutumattomilta? Jos ei, huono läpimenoaika. Entä atomisuuden takaaminen? Pakota Älä pakota Älä varasta Triviaali Varasta Haluttu 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 7

Lisää varastamisesta Varasta (Atomisuuden takaaminen?) Varastetaan puskurikehys F: Nykyinen sivu F:ssä (olkoon P) kirjoitetaan levylle; jollain transaktiolla lukko P:hen Mitä tehdään jos transaktio peruuntuu? Pitää muistaa tietoalkion vanha arvo ennen sivun varastamista (tarvitaan kirjoitetun sivun P muutosten perumiseen (undo)). 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 8

Lisää pakottamisesta Älä pakota (Pysyvyyden takaaminen?) Entä jos järjestelmä kaatuu ennen kuin muutoksia sisältävä sivu ehditään kirjoittamaan levylle? Kirjoitetaan mahdollisimman vähän sitoutumisen yhteydessä ja tarjotaan tapa uudelleen suorittaa muutokset (redo). 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 9

Perusidea: loki Tallennetaan REDO ja UNDO informaatio jokaisesta muutoksesta lokiin. Peräkkäistalletuksena kasarakenteeseen (talletus eri levylle kuin tietokanta). Mahdollisimman vähän tietoa muutoksesta, joten useita muutoksia mahtuu yhdelle sivulle. Loki: Järjestetty lista REDO/UNDO operaatioita Lokitietue sisältää: <XID, pageid, offset, length, old data, new data> Sekä muuta hallintotietoa. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 10

Loki Loki (log) on peräkkäistiedosto, jonne viedään tapahtuman aloituskirjauksia (start,t) muutoskirjauksia (write,t,x,v1,v2): tapahtuma T on muuttanut tietoalkion x vanhan arvon v1 (alkukuva, before image) uudeksi arvoksi v2 (jälkikuva, after image) sitoutumiskirjauksia (commit,t): tkhj on sitoutunut keskeytyskirjauksia (abort,t): tkhj on peruuttanut tarkistuspisteitä (checkpoint) [ lukukirjauksia (read,t,x) ei tarvita elvytyksessä] 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 11

Lokitietueet Lokitietueen kentät: päivitys tietueilla prevlsn transid type pageid length offset before image after image Compensation Log Records (CLRs) Peruutusoperaatioita varten 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 12

Write Ahead Logging (WAL)) Protokolla: 1. Päivityksen lokikirjaus pakotetaan levylle ennen kuin muutokseen liittyvä tietosivu kirjoitetaan levylle. 2. Kirjoitetaan kaikki transaktioon liittyvät lokikirjaukset levylle ennen transaktion sitoutumista. #1 takaa atomisuuden. #2 takaa pysyvyyden. Kuinka lokikirjauksia käytetään elvytyksessä? Tutkimme ARIES algoritmia. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 13

WAL & Loki Jokaisella lokitietueella yksikäsitteinen tunnistenumero eli Log Sequence Number (LSN). Jokaisella tietosivulla on sivutunniste eli pagelsn = Viimeisimmän sivuun muutoksia sisältävän lokitietueen LSN. Järjestelmä ylläpitää tietoa viimeisimmästä levylle kirjoitetusta lokitietueesta tunnuksessa flushedlsn. WAL: Ennen sivun kirjoitusta, pagelsn flushedlsn 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 14

Muita lokiin liittyviä tietorakenteita Transaktiotaulu: Jokaisella transaktiolla yksi rivi sisältäen transaktion tunnisteen XID, tilan (running/commited/aborted), ja lastlsn. Likaisten sivujen taulu: Jokaisella puskurisivulla yksi rivi, sisältäen reclsn sen lokitietueen LSN, joka ensimmäisenä aiheutti sivun muuttumisen likaiseksi. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 15

Transaktion normaali suoritus Joukko luku ja kirjoitusoperaatioita, joita seuraa peruutus tai sitoutumisoperaatio. Oletetaan että kirjoitus on atominen levylle. Käytössä tiukka 2PL (Strict 2PL). Varasta, älä pakota puskurinhallinta käyttäen Write Ahead Logging. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 16

Transaktion peruutus Oletetaan että transaktio suorittaa abort operaation. Käydään läpi lokia lopusta alkuun päin peruuttaen tehdyt muutokset. Haetaan transaktion lastlsn transaktiotaulusta. Lokitietueiden ketjua voidaan seurata taaksepäin käyttäen prevlsn kenttää. Ennen peruutuksen aloitusta, kirjoitetaan abort tietue lokiin. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 17

Peruutus, jatkoa. Peruutuksen tekemiseen tarvitaan lukko tietoalkioon (ei ongelma!) Ennen vanhan arvon palautusta kirjoita CLR: Jatketaan siis peruutuksessa lokikirjauksia!! CLR sisältää ylimääräisen kentän: undonextlsn Viite seuraavaan LSN:ään joka perutaan (eli käsittelyssä olevan tietueen prevlsn kentän arvo). CLRs ei koskaan peruta (saatetaan toistaa!) Peruutuksen loputtua kirjoitetaan end tietue. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 18

Transaktion sitoutuminen Kirjoitetaan commit tietue lokiin. Kaikki transaktion lokitietueen aina lastlsn:ään asti kirjoitetaan levylle. Takaa että flushedlsn lastlsn. Lokikirjaukset ovat synkronisia peräkäisiä levyoperaatioita. Useita lokitietueita/sivu. Commit() palaa. Kirjoitetaan end tietue lokiin. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 19

Tarkistuspiste (checkpoint) Tarkistuspisteessä viedään levylle asti kaikki puskureissa olevat tietokantasivujen päivitykset seuraavien häiriöiden yhteydessä tarvittavat elvytystoimenpiteet vähenevät Tarkistuspiste sisältää seuraavat toiminnot: 3. estetään väliaikaisesti transaktioiden suoritus 4. pakkokirjoitettaan kaikki transaktioiden päivittämät sivut puskurista levylle 5. kirjoitetaan lokiin tarkistuspistekirjaus ja pakkokirjoitettaan loki levylle 6. sallitaan transaktioiden jatkaa suoritustaan 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 20

Elvytyksen periaatteet Peruutetaan (undo) ne muutokset, joita keskeytyneet transaktiot ovat tehneet levyille. Suoritetaan uudelleen (redo) sellaisten sitoutuneiden transaktioiden suorittamat tietokantapäivitykset, joita ei häiriön sattuessa ollut ehditty kirjoittaa levylle (vaan vasta puskurissa olevaan sivuun). 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 21

Elvytysalgoritmi 1. luetaan lokia levyltä ja muodostetaan kaksi transaktiolistaa: Keskeneräiset = transaktiot, joille on lokissa aloituskirjaus (start), mutta ei sitoutumiskirjausta (commit) eikä viimeistä tarkistuspistettä edeltävää keskeytyskirjausta (abort) keskeytyskirjaus ennen tarkistuspistettä: muutosten peruutukset on merkitty puskuriin ja huomattu tarkistuspisteessä Sitoutuneet = transaktiot, joille on lokissa sitoutumiskirjaus viimeisen tarkistuspisteen jälkeen 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 22

Elvytysalgoritmi, peruutusvaihe 2. Perutaan keskeneräiset listan transaktioiden kirjoitus operaatiot selaamalla lokia lopusta alkuun päin: Jokaista löytyvää muutoskirjausta (write,t,x,vanha,uusi) kohti suoritetaan operaatio write(x, vanha) (palautetaan tietoalkion x alkukuva voimaan), jos LSN <= pagelsn. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 23

Elvytysalgoritmi, toistovaihe 1. Uusitaan sitoutuneet listan transaktioiden kirjoitus operaatiot selaamalla lokia alusta loppuun päin: jokaista löytyvää muutoskirjausta (write,t,x,vanha,uusi) kohti suoritetaan operaatio write(x, uusi) (saatetaan siis tietoalkion jälkikuva uudelleen voimaan), jos LSN > pagelsn 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 24

Perusteluita Ennen tarkistuspistettä suoritettua kirjoitusoperaatiota ei tarvitse uusia (esimerkissä rivi 5), sillä se on tarkistuspisteessä hoidettu levylle. Tarkistuspisteen jälkeen tehtyä kirjoitusoperaatiota, jonka tulos on ehtinyt levylle ennen häiriötilannetta, ei tarvitse uusia Myös perumiskirjoitus (undo) voi olla turha, sillä sellaisia kirjoituksia, joiden tulos ei ole ehtinyt levylle, ei tarvitse perua Uusimis /perumiskirjoituksen tarve selviää vertaamalla lokitietueen tunnusta (LSN) ja datasivun pagelsn kenttää: undo tarvitaan, jos LSN <= pagelsn redo tarvitaan, jos LSN > pagelsn 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 25

Esimerkki Jos pagelsn(x1) = 10, pagelsn(x2) = 7, niin vain write(x1, CCC ) tarvitaan 1: (start, T1) 2: (start, T2) 3: (write, T1, x1, AAA, BBB ) 4: (commit, T1) 5: (write, T2, X1, BBB, CCC ) 6: (checkpoint) 7: (write, T2, x2, 0000, 1111 ) 8: (start, T3) 9: (commit, T2) 10: (write, T3, x1, CCC, DDD ) 11: (write, T3, x2, 1111, 2222 ) Elvytysalijärjestelmä lukee lokia levyltä ja muodostaa listat L1 = <T3>, L2 = <T2> peruu transaktion T3 operaatiot suorittamalla: {write(x2, 1111 ) (11)} write(x1, CCC ) (10) suorittaa uudelleen transaktion T2 operaatiot {write(x1, CCC ) (5)} {write(x2, 1111 ) (7)} 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 26

Häiriö kesken elvytyksen? Häiriö voi sattua myös kesken elvytyksen Tällöin oleellista on, että elvytysprosessin peräkkäiset suoritukset tuottavat saman tuloksen Edellä kuvattu elvytys ei kirjaa lokiin mitään, joten siinä lähdetään uudelleen liikkeelle samasta lähtötilanteesta, pagelsn kentät sivuilla ovat voineet muuttua, jos sivu on viety levylle, mutta lopputulos on sama. Käytännössä kirjataan peruutusten yhteydessä lokiin yleensä myös kompensaatiomerkintöjä (CLR), joista näkee mitä peruutuksia on tehty. Näitä ei kuitenkaan tarvita elvytyksessä. Elvytyksestä on erilaisia muunnelmia riippuen siitä minkälaista puskurien levykirjoituspolitiikkaa käytetään. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 27