Klasi kace poruch 2
Obnova transakc po vypadku
X logicke chyby
v r esen T nelze pokracovat v dusledku nejakych vnitrnch chybovych podmnek aplikace/transakce { chybny vstup, nenalezen dat, pretok, . . . { Vesmes neobnovitelna c innost, havarie / krach cele aplikace X systemov e chyby chybu detekuje podpurn y system (TPM, OS, DBS, . . . ), krachuje aktivn T dusledkem napr. uvaznut , uplynutm c asoveho limitu, . . . ). { Zkrachovana transakce mu ze byt protokolem TPM r escm uvaznut nasledn e spustena znovu. { Zkrachovana transakce z duvodu uplynut c asoveho limitu mu ze byt klientem nasledn e spustena znovu.
PA 150 Principy operacnch system u Jan Staudek http://www. .muni.cz/usr/staudek/vyuka/
}
poruchy transakc
w A| y < 5 4 23 1 0 / -. , )+ ( %&' $ # !"
Æ
Verze : podzim 2015 Jan Staudek, FI MU Brno
Klasi kace poruch 2
2
PA150 { Obnova transakc po vypadku
1
Obnovitelnost transakcnho zpracovan , spravce obnovy
porucha disku X X X X X
|
2
padnut hlav disku na povrch, chyba pamet'oveho media, porucha vyrazujc celou/cast diskove pameti, . . . predpoklad { porucha je detekovatelna (kontroln soucty, . . . ) Po obnove z periodicky provad enych zalo znch kopi dat lze zkrachovanou transakci spustit znovu.
2
Studovanou oblast je r esen obnovy transakcnho zpracovan po vypadku systemu, ktery zpusobuje ztratu obsahu RAM, nikoli ztratu obsahu permanentnch pamet Obnova mus zachovat vlastnost transakc { atomicitu: X Zprstupnovan e objekty v databazi (na disku) odra zej { vsechny u cinky provedenych (committed) transakc a
vypadek systemu
{ z adn e u cinky nedokoncenych c i zkrachovanych transakc
X TPM pri obnove po vypadku mus eliminovat u cinky zkrachovanych
X vypadek energie, hw porucha, sw porucha systemu, ... X predpoklady { obsah energeticky nezavisl ych pamet se vypadkem
transakc a transakc nedokoncenych pri vypadku X Eliminace u cinku nedokoncenych c i zkrachovanych transakc obnovuje stav jimi modi kovanych objektu do stavu, ve kterem se nachazely pri startu techto transakc { roll back
systemu neposkozuje, stav systemu lze obnovit X neporusenost lze over ovat provad enm ruzn ych integritnch kontrol X Transakce pri vypadku nedokoncena krachuje a mu ze ji pri obnove c innosti spustit znovu Recovery Manager (TPM). Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
2 2
Eliminaci u cinku r es TPM svoj funkcnost { spravce obnovy Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
3
Obnovitelnost transakcnho zpracovan , spravce obnovy 2
Algoritmy obnovy
Dosazen atomicity transakc:
2
X Vlastnost trvalosti (durability) {
objekty zpracovane provedenymi transakcemi se mus uchovavat trvale, jsou uklad any do permanentn pameti a pote jsou zde kdykoliv dostupne { Po potvrzen klientova prohla sen transakce za provedenou, mus byt u cinky transakce trvale uchovane v permanentn pameti X Vypadky serveru (systemu) nesm r esen atomicity transakc ovlivnit, transakce mus byt atomicke i v prpade vypadku serveru
2
2
X Akce probhajc behem normaln ho r esen transakc
cl { zajistit dostatek informac nutnych pro obnovu po vypadku cena { snz en vykonu pro aplikace, zvy sen narok u na pamet' X obnovovac akce probhajc po vypadku, cl { obnova obsahu baze dat do stavu, ktery zarucuje (viz vy se): { konzistenci baze dat, { atomicitu transakc a { trvalost vysledk u transakc
Proces obnova po vypadku = zajisten, aby X vsechny objekty modi kovane transakcemi byly pri
oziven po vypadku obnovitelne X hodnoty obnovitelnych objektu byly vysledkem vsech zmen realizovanych provedenymi transakcemi a z adnou ze zmen realizovanych rozpracovanymi, resp. zkrachovalymi transakcemi Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
4
Jan Staudek, FI MU Brno
Repete zaklad u OS { Typy pamet pro uchovav an dat 2
2
2
2
2
X vypadek energie zpusob ztratu jejho obsahu X typicky operacn pamet', RAM, cache pamet' X typicky prmo prstupna z procesoru
2
energeticky nezavisl a (permanentn), Nonvolatile Storage
2
X X X X
2
obsah je zachovan i po vypadku energie typicky disk, paska byv a o nekolik r ad u pomalejs pameti nez volatile pameti obsah nen prmo prstupny z procesoru
2
stabiln, Stable Storage
5
jednotka IO prenosu (disk ⇔ RAM) { blok dat pro na s u cel { 1 blok dat reprezentuje 1 objekt zprstupnovan y transakc, pracujeme s neblokovanymi zaznamy blok dat ulozeny na disku { fyzicky blok blok dat ulozeny v RAM { blok ve vyrovnavac pameti, (Buffer block), cache objektu v nestal e pameti presun bloku dat mezi RAM a diskem spoust DBS operacemi pomoc sluzeb OS prena s fyzicky blok B do RAM, vytva r blok ve vyrovnavac pameti, v RAM, tzv. kopii objektu v RAM X output(B) { pomoc sluzeb OS prena s blok ve vyrovnavac pameti B v RAM na disk, prp. na disku jm prslusny fyzicky blok nahrazuje
Na s hlavn cl { zajistit r adn y beh transakc v prpadech, kdy vypadek systemu zpusob ztratu obsahu energeticky zavisl e pameti PA150 { Obnova transakc po vypadku
PA150 { Obnova transakc po vypadku
X input(B) {
X Informacn obsah se nikdy neztrat, dosud ,,chimera", X idea se aproximuje replikac permanentn pamet (RAID)
|
|
Repete zaklad u OS { Zprstupnov an dat na disku
energeticky zavisl a (nestal a), Volatile Storage
Jan Staudek, FI MU Brno
Jedna se o techniky zajist'ujc v prostred s vypadky konzistenci baze dat, atomicitu transakc vc. trvalosti vysledk u provedenych transakc algoritmy obnovy maj 2 c asti
6
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
7
Repete zaklad u OS { Zprstupnov an dat na disku
Zprstupnov an dat transakcemi 2
pro jednoduchost predpoklad ame, z e jeden blok dat obsahuje prav e jednu datovou polozku zpracovavanou transakc X tzv. neblokovane zaznamy, kde zaznamem se rozum datova polozka
zpracovavan a transakc, objekt
2
kazda transakce Ti ma v RAM svoji privatn pracovn oblast, ve ktere se udrzuj lokaln kopie vsech datovych polozek, objektu, ke kterym Ti pristupuje, ktere Ti c te c i modi kuje X lokaln kopii datove polozky X transakce Ti znacme xi
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
8
Jan Staudek, FI MU Brno
Zprstupnov an dat transakcemi 2
transakce Ti presunuje obsah datove polozky X do/z privatn pracovn oblast transakce operacemi API TPM
2
prirazuje hodnotu X z bloku dat Bx v RAM do lokaln promenne xi
prirazuje hodnotu lokaln promenne xi do X v bloku dat Bx v RAM
2
2
transakce provad read(X) pri prvnm c tecm zprstupnen X dals c tec prstupy Ti k X se r es na lokaln kopii X , na xi pri modi kacnm prstupu k X transakce provad write(X), operace write(X) lze provest kdykoliv pred commit transakce
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
9
obe operace read(X) a write(X) si mohou po DBS/OS vynutit proveden operace input(Bx) pokud kopie bloku Bx nen jeste umstena ve vyrovnavac pameti v RAM X pri vytvoren xi operac read(X) X pred vypisem xi operac write(X)
X write(X)
2
PA150 { Obnova transakc po vypadku
Zprstupnov an dat transakcemi
X read(X)
2
|
10
Proveden output(Bx) nemus bezprostredne navazovat na vyvolan write(X). Operace output(Bx) se mu ze provest az kdyz OS jej proveden povazuje za vhodne.
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
11
Zprstupnov an dat transakcemi
Problem zajisten atomicity pri vypadku systemu 2
Osud provedene transakce dky moznemu odlozen operac output nemus byt pri vypadku znam y X TPM nema informaci o tom, ktere bloky dat OS vypsal (output)
na disk pred vypadkem
2
sen problemu Re atomicity v prostred s vypadky systemu X Do permanentn pameti se mus nejprve zapsat
informace popisujc zmeny, aniz by se menila samotna databaze. X Tato informace nam pomu ze zajistit, z e se vsechny modi kace vykonane provedenou transakc zaznamenaj v databazi (treba az v prub ehu obnovy po vypadku). X Tato informace mu ze take pomoci zajistit, z e v databazi nezustanou z adn e zmeny vykonane zkrachovanou transakc.
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
12
Jan Staudek, FI MU Brno
Obnovitelnost transakcnho zpracovan , spravce obnovy 2 2
PA150 { Obnova transakc po vypadku
13
Metody udr zby obnovovacho souboru
Obnovitelnost po vypadku / poruse r es soucast TPM { spravce obnovy, recovery manager spravce obnovy ma ukoly
2
Veden denku, log X studujeme majoritne
2
X uchovavat informace o modi kacch hodnot objektu provad enych
Stnove kopie, shadow versions X nechav ame sps e stranou pozornosti, uvedeme jen bazov e principy
transakcemi v permanentn pameti (v obnovovacm souboru, recovery file) X po opetovnem spusten po vypadku obnovovat puvodn hodnoty objektu v serveru (puvodn = vysledek provedenych transakc) X prub ez ne reorganizovat obnovovac soubor s clem dosahnout co nejvyss vykon obnovy X udrzovat dostatecny pamet'ovy prostor na disku pro obnovovac soubor 2
|
2
Obnovovac proces mus byt idempotentn operac X lze jej opakovat vcekrat se stejnym vysledkem
Pokud se pozaduje obnovitelnost i pri poruse permanentn pameti, je potreba pouzt zrcadlen disku (RAID) apod. Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
14
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
15
Typy zaznam u v obnovovacm souboru typu denk
Veden denku 2 2
Zmeny v databazi spravovane serverem se behem provad en vsech transakc zaznamenavaj do denku (log) denkove zaznamy se vytva r apriornm zaznamenav an m { write-ahead logging,
2
X X X X X X
X tj. vytva r se pred vlastnm provedenm operac nad daty X zapisuj se na disk prmo, bez vyrovnav an toku na urovni OS (TPM vyvola bezprostredn proveden sluzby OS output) X Denk mus TPM periodicky c istit,
vymazem dele jiz nepotrebnych zaznam u. Princip pozname pozdeji.
2 2
porad zaznam u v denku odra z historii behu transakcnho zpracovan denk obsahuje aktualn , posledn obraz hodnot objektu + historii transakc, ktere tento obraz vyprodukovaly Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
2 2 2 2 16
spravce obnovy je aktivovan kdykoliv transakce
2
v obnovovacm souboru existenci transakce X zapisuje { spravce aktualizuje obnovovac soubor zaznamem o korekci objektu X je provedena / zkrachuje { spravce aktualizuje v obnovovacm souboru stav transakce zaznamem o proveden c i krachovan
2
|
PA150 { Obnova transakc po vypadku
2
2
denk nen aplikacn soucast baze dat, denk (obnovovac soubor) si uchovav a v permanentn pameti TPM pri obnove po vypadku se rus kazda transakce, ktera nema v denku zaznam o proveden { vsechny podle denku neprovedene transakce krachuj
Jan Staudek, FI MU Brno
jejz vysledky se pred vypadkem nezapsaly trvale na disk { T modi kuje DB ≡ c in write do bueru v RAM, ktery OS nasledn e, nekdy, sluzbou output vypisuje na disk
Zaznam o startu transakce, < Ti start > Zaznam o proveden transakce, < Ti commit > Zaznam o zkrachovan transakce, < Ti abort > pozdeji pozname nektere dals typy zaznam u v denku |
PA150 { Obnova transakc po vypadku
17
Veden denku
X je spoustena { spravce zaznamenav a
2
Ti identi kator transakce, ktera provedla write Xj identi kator polozky/objektu V1 puvodn hodnota polozky/objektu V2 nova hodnota polozky/objektu umoznuje provest undo zmen provedenych zkrachovalou T umoznuje provest redo zmen provedenych provedenou T,
Jan Staudek, FI MU Brno
Veden denku 2
Zaznam o korekci polozky/objektu, < Ti, Xj , V1, V2 >
2
2
18
TPM udrzuje v permanentn pameti konzistentn stav cele baze dat { prpadne v urcitych intervalech vytva r v denku kopie stavu DB, tzv. kontroln body, checkpoints pri obnove baze dat po vypadku TPM zrekonstruuje stav DB pred vypadkem podle informac uvedenych v poslednm kontrolnm bodu v denku historii do kontrolnho bodu lze z denku vymazat zapis do obnovovacho souboru se r es atomicky, zapisy do obnovovacho souboru jsou prme, nevyrovnavan e zapisy, pokud server vypadne, je vadny pouze posledn zapis obnovovac soubor je udrzovany jako sekvencn soubor, sekvencn zapisy na disk lze r esit pomerne rychle Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
19
Modi kace objektu v DB 2 2
Modi kace objektu v DB
pouzvaj se dve varianty provad en modi kac objektu v DB, odlisuj se okamzikem kdy se objekt v bazi dat modi kuje bezprostredn modi kace baze dat v prub ehu r esen transakce (Immediate database modification) X zaznamy o korekci se zapisuj do denku ve stabiln pameti prmo,
obvykle bez kumulac ve vyrovnavac ch pametech na urovni OS X modi kace objektu v DB se mohou provest kdykoliv pred nebo po proveden transakce, ne nutne v porad provad en zapis u 2
nemus byt jeste vypsany na disk
X bez c transakce modi kujc objekty DB mu ze krachovat dky vypadku 2
odlozena modi kace baze dat az do proveden transakce, (Deferred database modification) a pokud je T opakovane c te, c te je z vlastn kopie X procedura obnovy je jednoduss , sezname se s n pozdeji Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
Algoritmus obnovy mus obecne poctat s tm, z e X transakce mu ze byt provedena, ale datovy buer transakce v RAM
2
X DB se modi kuje pri commit transakce X v RAM mus transakce udrzovat kopie vsech modi kovanych polozek
2
Denk obsahuje jak stare tak nove hodnoty objektu, lze tudz r esit jak undo, tak i redo transakce Algoritmy obnovy obvykle vyzaduj, aby objekt modi kovany jednou transakc nemohla modi kovat jina transakce, dokud se prva transakce neprovede nebo nezkrachuje { mus se pouzt striktn 2-fazov e zamykan apod. { exkluzivn zamky se uvolnuj az pri commit/abort transakce Prinos obnovitelnosti se dosahuje za cenu omezen soubez nosti
20
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
Denk se vytva r principem apriorn zaznamenav an { write-ahead logging,
2
+ Zaznam o korekci se do denku na disku zapisuje pred modi kac objektu v DB a dky tomu lze v DB udelat
X denkovy zaznam se zaznamenav a do stabiln pameti prmym zapisem
X modi kaci objektu kdykoliv pozdeji, kdy to je optimaln X undo modi kac udelanych zkrachovanymi / nedokoncenymi
X X
X redo modi kac udelanych provedenymi transakcemi,
X X
{ tj. bez vyrovnav an na urovni pod TPM (tj. na urovni OS) pri spusten transakce Ti se vytva r denkovy zaznam < Ti start > denkovy zaznam o w-operaci popisuje jednu write operaci uvedenm { jmena transakce { jej jednoznacny identi kator, Ti { jmena datove polozky { jej jednoznacny identi kator, X { puvodn hodnotu X (co bylo prepsano) { novou hodnotu X (po zapisu) v prpade r adn eho ukoncen (proveden) Ti se zapisuje denkovy zaznam < Ti commit > v prpade zkrachovan Ti se zapisuje denkovy zaznam < Ti abort >
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
21
Obnova podle denku, Log-based Recovery, klady / zapory
Obnova podle denku, Log-based Recovery, detailne 2
2
22
transakcemi
ktere se do vypadku nestacily vypsat do DB na disku
2
{ celkove dochaz ke snizovan vykonu X zapis dat se provad 2× (1× do denku a 1×do DB), X do denku se zapisuj zaznamy
o startech, proveden a krachovan transakc
2
{ zvysuje se pamet'ova slozitost X denk (log) vyzaduje pro sve ulozen dals pamet' na disku Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
23
Prklad denku, bezprostredn modi kace
Provedena transakce 2
Transakce se stane provedena jakmile se do denku na disku zaps e zaznam o proveden transakce < Ti commit >
2
X v tomto okamziku jsou v denku uz vsechny
2
2
dosavadn denkove zaznamy dane transakce X provedenou transakci lze tudz kdykoli (po vypadku) zopakovat (redo) z hlediska naln ch hodnot objektu X jestlize dojde k vypadku a v denku zaznam < Ti commit > nen, u cinky transakce se pri obnove c innosti vrac zpet na puvodn hodnoty
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
2
Necht' inicialn e plat A = 1 000, B = 2 000, C = 700 T0: presunuje 50 z A do B T1: snizuje C o 100 denkove a DB zaznamy odpovdajc proveden < T0,
24
Jan Staudek, FI MU Brno
Obnova podle denku pri soubez ne r esenych transakcch 2 2 2 2
PA150 { Obnova transakc po vypadku
25
Pouzite obnovovac procedury
vsechny T sdlej jeden denk (log) a objekty v RAM necht' se pouzva se bezprostredn modi kace dat
2
sdleny objekt v RAM mu ze chtt modi kovat vce T mus se pouzt striktn 2-fazov e zamykan
2 redo(Ti)
X tj. objekt X modi kovany neprovedenou T ostatn T nemaj dostupny (jak jinak provest undo kdyz by T1 korigovala X, pak T2 korigovala modi kovany X a provedla se (commit), a pote T1 zkrachovala ? ) 2
|
T1 >
pouzvaj denk k nalezen objektu modi kovanych Ti a starych a novych hodnot techto objektu X nastavuje objekty modi kovane Ti na nove hodnoty X porad nastavovan mus byt shodne s poradm modi kac X denk se obvykle prohledav a systematicky od zacatku a
nastavuje se nova hodnota pro kazdy modi kovany objekt
zaznamy do denku se provad ej stejne jako pri seriov em r esen transakc X POZOR: zaznamy ruzn ych transakc se mohou v denku prostrdavat
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
26
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
27
Pouzite obnovovac procedury
Pouzite obnovovac procedury
2 undo(Ti) X nastavuje objekty modi kovane Ti na stare hodnoty X porad provad en undo(Ti) { zpetne od poslednho zaznamu v denku pro Ti X pro kazdy obnoveny objekt X na hodnotu V se do denku zaps e specialn (redo-only) zaznam < Ti, X, V > X nakonec se do denku zaps e specialn zaznam < Ti, abort > X operace undo(Ti) se provad prav e jedenkrat v prpadech, z e se v denku nenalezne ani commit ani abort Ti a r es se navrat
2
Transakce bude pri obnove undone, pokud denk obsahuje jej start a neobsahuje jej commit nebo abort
2
Transakce bude pri obnove redone, pokud denk obsahuje jej start a obsahuje jej commit nebo abort X redo zkrachovale transakce je dky specialn m redo-only zaznam um
v denku smysluplna a r esen je pohotovejs
behem normaln ho zpracovan nebo pri obnove po vypadku. X Po proveden vsech undo bude mt kazda transakce v denku zaznam commit nebo abort a postaci se s obnovou pomoc redo
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
28
Jan Staudek, FI MU Brno
ad a), vypadek nastal po
write (B)
v T0
2
X v denku je < T0 start > ale nen v nem < T0 commit/abort >, pri obnove se provede undo( < T0 >),
do denku za zaps e
hodnoty A a B se vrat (na disku) na originaln hodnoty 1 000 a 2 000 |
PA150 { Obnova transakc po vypadku
29
ad b), vypadek nastal po
write (C) v T1 X v denku je < T1 start > a nen v nem < T1 commit/abort >, provede se undo( < T1 >), vc. < T1, C, 700 >, < T1, abort >
hodnota C se vrat (na disku) na originaln hodnotu
X v denku je < T0 start > i < T0 commit >, < T0 > je provedena, udela se redo( T0) X hodnoty A, B a C budou 950 a 2 050 a 700
< T0, B, 2000 >, < T0, A, 1000 >, < T0, abort >
Jan Staudek, FI MU Brno
PA150 { Obnova transakc po vypadku
Pouzit denku pro undo a redo transakc
Pouzit denku pro undo a redo transakc
2
|
30
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
31
Pouzit denku pro undo a redo transakc
Kontroln body, Checkpoints 2 2 2 2
2
ad c), vypadek nastal po
2
commit (T1)
X vystup vsech denkovych zaznam u umstenych v danem okamziku
X v denku je < T0 start > i < T0 commit >, provede se redo(T0) X v denku je < T1 start > a < T1 commit >, provede se redo(T1) X hodnoty A, B a C budou 950 a 2 050 a 600 Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
denky transakc mohou byt dlouhe, obnova pak trva dlouho mohou se zbytecne delat redo transakc, ktere jiz maj provedene vystupy (output) do baze dat periodicky vytva rene kontroln body dobu obnovy zkrat behem vytva ren kontrolnho bodu nesmej transakce delat korekce dat, nesm zapisovat zaznamy do denku apod. pri periodickem vytva ren kontrolnch bodu se provad : v RAM z RAM (energeticky zavisl e pameti) do permanentn pameti X vystup vsech modi kovanych bloku vyr. pam. na disk (perm. pamet') X vystup zaznamu < checkpoint L > do denku (log) udrzovaneho v energeticky nezavisl e pameti X L je seznam aktivnch transakc v dobe tvorby kontrolnho bodu
32
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
33
Prklad obnovy z kontrolnho bodu
Kontroln body, Checkpoints provedene pred zapisem < checkpoint L > se neobnovuj pomoc redo, jejich vysledek je soucast dat kontrolnho bodu Obnova se tyk a pouze { aktivnch, tj. dosud neprovedenych transakc v okamziku vytva ren kontrolnho bodu a { vsech transakc nasleduj cch po techto transakcch Pro transakce nemajc v denku < commit > se provede undo Pro transakce majc v denku < commit > se provede redo
2 Ti
2
2 2
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
34
X vysledek T1 je obsazeny v kontrolnm bodu, nespoust se z adn a akce X T2 a T4 jsou v dobe vypadku jiz provedene, T3 a T5 nejsou v dobe vypadku provedene, X priprav se seznam undo a provede se redo T4 a pak redo T2 X provede se undo T5 a pak undo T3 Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
35
Eliminace u cinku zkrachovale transakce, rollback
Algoritmus obnovy 2 2
2
Nyn konecne lze uvest podrobnejs vyklad algoritmu obnovy po vypadku Predpoklad { objekty modi kovane dosud neprovedenou transakc nelze modi kovat jinymi transakcemi dokud zmnena transakce nestane provedenou nebo zkrachuje Nejprve si uka zeme navrat transakce pri normaln m behu, nejde o vypadek, pouze zkrachovala transakce
2 2
X zpetne prohlz denk a hleda zaznamy < Ti, Xj , V1, V2 > X do Xj zapisuje V1 a do denku se zaps e redo-only zaznam < Ti, Xj , V1 >
tzv. kompenzacn zaznam v denku, zajist'uje nastaven originaln hodnoty pri obnove ve fazi redo X jakmile nalezne v denku zaznam < Ti start >, zpetne hledan zastav a do denku prida < Ti abort > 2
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
36
2 2 2 2 2 2
|
PA150 { Obnova transakc po vypadku
|
PA150 { Obnova transakc po vypadku
37
Obnova po vypadku systemu, faze undo
algitmus obnovy postupuje od poslednho kontrolnho bodu de novaneho v denku zaznamem < checkpoint L > vpred pripravuje seznam vracenych transakc, undo, ten inicialn e nastav na seznam L ze zaznamu < checkpoint L > kdykoliv naraz na zaznam < Ti, Xj , V1, V2 >, zaps e V2 do Xj kdykoliv naraz na redo-only zaznam < Ti, Xj , V1 >, zaps e se V1 do Xj kdykoliv naraz na < T i start >, prida Ti do seznamu undo kdykoliv naraz na < T i commit/abort > odstran Ti ze seznamu undo na konci faze redo obsahuje seznam undo seznam neprovedenych transakc v dobe vypadku Jan Staudek, FI MU Brno
v denku jsou nyn de nice { jak modi kac provedenych transakc, { tak obnovy puvodn ch hodnot (eliminace u cinku zkrachovalych transakc) Jan Staudek, FI MU Brno
Obnova po vypadku systemu, faze redo 2
Necht' dojde ke krachu transakce < Ti > behem jej normaln c innosti, nejde o obnovu po vypadku systemu cinky zkrachovale transakce algoritmus krachovan U vrac:
38
2 2 2 2
2
2
vrac se zpet u cinky vsech transakc uvedenych v seznamu undo algoritmus denk prochaz zpetne kdyz naraz na zaznam o modi kaci objektu transakc uvedenou v seznamu undo vrat mu puvodn hodnotu kdyz nalezne < Ti start > transakce uvedene v seznamu undo, zaps e do denku < Ti abort > a Ti odstran ze seznamu undo jakmile seznam undo vyprazdn , faze undo konc, tj. nalezly se zaznamy < T i start > vsech transakc inicialn e uvedenych v seznamu undo skoncila obnova, aplikacn uloha mu ze pokracovat Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
39
Odkladan a modi kace baze dat
Pouzit denku pro undo a redo transakc 2
2
modi kace dat v DB se v pub ehu r esen T zaznamenavaj pouze do denku (do logu), a jsou udrzovane pouze v pracovnch oblastech transakce v RAM operace zapisu do DB (output) se provad ej az pri proveden transakce (po dosazen bodu commit v z ivote transakce) X v hotove transakci, tj. pred provedenm t commit, jsou zmeny
provedene pouze v lokaln pracovnm prostoru transakce
X behem provad en t commit se trvale prmym zapisem zaps do denku
zaznamy o zapisech, a pote se modi kace zaps do databaze X pokud transakce krachne pred provedenm t commit, v databazi se nic nezmenilo, nen nutne pri obnove delat undo vysledky transakc provedenych pred vypadkem se pri obnove podle denku reaplikuj, provad se redo X nazev teto varianty algoritmu obnovy { NO-UNDO/REDO algorithm Jan Staudek, FI MU Brno
Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
40
2 2
predpoklad ame seriov e provad en transakc transakce zacna zapsan m do denku zaznamu < Ti start > operace write(X) zaps e do denku zaznam o w-operaci
2 2
X V je nova hodnota, original se nezaznamenav a (NO-UNDO/REDO) X modi kace X v DB se neprovedla okamzite, odlozila se
2
kdyz se Ti prohlasuje za provedenou (commited), { c tou se zaznamy o w-operacch z denku, { dokoncuj se (output) dosud odlozene operace write, a { a teprve pote se transakce stav a provedena, do denku se zapisuje zaznam < Ti commit > Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
||||||||||||||||||||||||
41
Odkladan a modi kace baze dat
< Ti, X, V >
2
PA150 { Obnova transakc po vypadku
||||||||||||||||||||||||
Odkladan a modi kace baze dat podrobneji 2
|
42
Jestlize system vypadne pred commit transakce nebo kdyz transakce zkrachuje, informace v denku se ignoruje vypadek systemu behem korekce dat nevad, denk je pamatovany ve stabiln pameti, modi kace lze zopakovat stav modi kovanych dat po vypadku systemu se obnovuje podle denku uchovaneho ve stabiln pameti X po vypadku se transakce opakuje (redo) pouze kdyz byla provedena, tj. v denku je < Ti starts > i < Ti commit > X provad se Redo(Ti), u cinky provedene transakce se obnovuj X tj. pri obnove system obnovy prochaz denk a pro kazdy zaznam < Ti commit > v denku se provede Redo(Ti) Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
||||||||||||||||||||||||
43
Bezprostredn modi kace baze dat
Odkladan a modi kace baze dat 2
operace redo mus byt idempotentn operac
2
X opakovane proveden je ekvivalentn jednorazov emu proveden X napr. prevod c astky z jednoho u ctu na jiny u cet nen idempotentn X nutna vlastnost pro obnovu po poruse, ke ktere doslo behem obnovy
2 2
2
baze dat se koriguje (output) bezprostredne po te, co dosud neprovedena (tj. aktivn) transakce, provede write baze dat se tedy modi kuje jeste v dobe, kdy je transakce aktivn, dosud neprovedla t commit aby bylo mozne tento krok prp. eliminovat (undo), mus se do w-zaznamu v denku udavat jak stara tak i nova hodnota modi kovane datove polozky zaznam o modi kaci X se vytva r pred modi kac X operac write(X), pozadavek apriornho zaznamenav an X zaznamy v denku se zapisuj prmo do permanentn pameti,
bez vyrovnav an
X vsechny zaznamy v denku o modi kaci X mus byt zapsane do denku drve, nez se provede modi kace baze dat operac output(BX ) Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
44
||||||||||||||||||||||||
2 2
kdyz se Ti prohlasuje za provedenou, do denku se zapisuje zaznam < Ti commit > vystup (output) modi kovanych bloku na disk lze provest kdykoliv pred tm nebo po te, co je transakce provedena dve varianty obnovy pri bezprostredn modi kaci baze dat X transakcn monitor zajist output vsech modi kac pred provedenm
t commit { nen potreba delat pri obnove REDO { varianta UNDO/NO-REDO algorithm X transakcn monitor nezajist output vsech modi kac pred provedenm t commit { je potreba delat pri obnove REDO { varianta UNDO/REDO algorithm { nejslozitejs technika obnovy, vyklad viz predna ska Jan Staudek, FI MU Brno
|
PA150 { Obnova transakc po vypadku
|
PA150 { Obnova transakc po vypadku
||||||||||||||||||||||||
Bezprostredn modi kace baze dat 2
Jan Staudek, FI MU Brno
46
45