n acest paragraf v-om vorbi despre posibilitatea de a restabili datele, dup situaiile de e!ec a sistemului, adic proprietatea "#$ % longitivitatea tran&aciei' (rincipala cerin a longitivitii datelor tran&acii const )n faptul c, datele fi*ate de tran&acii trebuie s se pstre&e )n sistem, c+iar dac )n urmtorul moment va avea loc e!ecul de sistem' Sar prea c aceast garanie poate fi obinut dac )n timpul fiecrei operaii deodat de scris toate modificrile pe disc' ,ceast metod nu este cea maai bunp, fiindc este o mare diferen de lucru cu memoria operativ !i cea e*tern' -nica metod, pentru nu a pierde tare )n vite& const )n folosirea onei tampon "bufer$ pentru paginele ba&ei de date )n memori aoperativ' ,ceasta )nseamn c datele se scriu pe disc nu direct, )n timpul e*ecutrii modificrii, dar mai t.r&iu, dup o perioad cam mare de timp' /ectnd la aceestea )n memoria e*tern trebuie s rm.n ceva, fiindc, )n ca& contrar nu va fi de unde de primit informaia pentru a fi restabilit' Cerina ,tomicit!ii tran&aciei este, c tran&aciile neterminate sau ce au revenit nu trebuie s lase urme )n 0#' ,ceasta )nseamn c datele trebuie s se pstre&e n ba&a de date cu re&erv, ce permite s avem informaie dea1uns, pentru a putea restabili starea ba&ei de date la momentul )nceperii tran&aciei e!uate' ,ceasta este asigurat de 1urnalul tran&aciilor' 2urnalul tran&aciilor conine detalii despre toate operaiile de modificare a datelor )n ba&a de date, valoarea vec+e !i nou a obiectului modificat, numrul de sistem al tran&aciei, obiect modificat !i alt informaie' Modurile restabilirei datelor 3estabilirea ba&ei de date se poate efecua )n urmtoarele ca&uri4 Revenirea individual a tranzaciei. 3evenirea tran&aciei individuale poate fi iniiat sau de tran&acia singur, cu instruc!iunea 35LL0,C6, sau de sistem' S70# poate iniia revenirea tran&aciei )n ca&ul apariiei creiva gre!eli )n lucru8 tran&aciei "de e*emplu, )mprirea la &ero$ sau dac aceast tran&acie a fost aleas )n rol de 1ertv )n ca&ul re&olvrii problemelor de impas' Eec uor al sistemului "refu& avariat al programului$' 3efu&ul u!or se caracteri&ea& prin pierderea memoriei operative a sistemului' n acest moment au de suferit toate tran&aciile, ce se e*ecutau )n acel moment de timp, se pierde coninutul tuturor buferelor 0#' #atele, pstrate pe disc rm.n nemodificate' 3efu&ul poate s se )nt.mple, de e*emplu, )n re&ultatul )ntreruperii avariate a curentului electric sau )n re&ultatului crorva probleme al procesorului' Eec complicat al sistemului "refu& avariat al te+nicii$' 9!ecul complicat se caracteri&ea& prin ie!irea din funcie al suporturilor e*terne de memorie' 9!ecul complicates poate )nt.mpla, de e*emplu, )n re&ultatul defectrii capului de citire a discului rigid' n toate trei ca&uri ba&a de restabilire a datelor, este 1urnalul tran&aciilor' Ca !i paginele 0#, datele din 1urnalul tran&aciilor nu se )nscrie nemi1locit pe disc, dar preventive se pstrea& )n buferul memoriei operative' n acest mod sistemul susine dou feluri de bufere - bufere a paginelor ba&ei de date !i bufere ale 1urnalulului de tran&acii' (aginele 0#, coninutul crora este )n bufer ")n memoria operativ $ difer de cele de pe disc, se numesc pagine "murdare" (dirty' Sistemul permanent susine lista paginelor :murdare; - dirty- lista' Scrierea paginelor :murdare; din bufer pe disc se nume!te )nscrierea paginelor n memoria extern' 9vident, este necesar de prev&ut a!a legi de )nscrie a buferelor ba&ei de date !i buferelor 1urnalului tran&aciilor, care vor satisface dou cerine4 <' Vitez maxim de executare a tranzaciilor. (entru aceasta este necesar de a )nscrie paginele mai rar posibil' =deal, dac memoria operativ ar fi fost infinit, !i e!ecuri nu se )nt.mplau nicic.nd, cea mai bun id>e era citirea complet a ba&ei de date )n memoria operativ, lucr.ndul cu datele? numai n memoria operativ, !i scrierea paginelor modificate pe disc numai )n momentul finisrii sistemei' 2' 7aranie, c la apariia e!ecurilor "de orice tip$, datele tran&aciilor finisate s poat fi restabilite, dar datele tran&aciilor nefinisate de lic+idat, adic de a garanta restabilirea ultimei stri a situaie 0#' (entru aceasta e necesar ceva de a )nscrie pe disc totu!i, c+iar dac aveam memorie operativ la infinit
(agina < din @ Conspect la MySQL 24 ,stfel, avem dou pricini pentru )nscrierea periodic a paginelor )n memoria e*tern % lipsa memoriei operative !i posibilitatea de e!ec a sistemului' (rincipiul de ba& al politicii de coordonare a )nscrierii buferului 1urnalului !i a buferelor paginelor ba&ei de date este c, scrierea modificrilor obiectului ba&ei de date trebuie s a1ung )n memoria e*tern a 1urnalului mai devreme ca obiectul modificat s a1ung )n memoria e*tern a 0#' 3espectivul protocol de 1urnali&are "!i diri1area cu buferele$ se nume!te Write !ead "og "W"$ - Ascrie dint#i n $urnal A, !i const )n faptul, c dac trebuie de )mpins )n memoria e*tern obiectul modificat a 0#, atunci )nainte de aceasta trebuie de garantat )nscrierea )n memoria e*tern a 1urnalului )nscriere despre modificarea lui' ,ceasta )nseamn, c dac )n memoria e*tern a ba&ei de date se conine obiectul, asupra cruia este efecuat o comand de modificare, atunci )n memoria e*tern a 1urnalului de tran&acii se conine scrierea despre aceast operaie' =nvers nu este corect - dac )n memoria e*tern a 1urnalului se conine scrierea despre careva modificare a obiectului, atunci )n memoria e*tern a ba&ei de date poate s nu fie obiectul modificat' 5 condiie adugtoare pentru )nscrierea buferelor este !i cererea, ca fiecare tran&acie terminat cu succes trebuie s fie real fi*at )n memoria e*tern' Ce ca& de e!ec a sistemului nu sar fi )nt.mplat, sistemul trebuie s fie )n stare de a restabili starea 0#, ce conine re&ultatele tuturor tran&aciilor fi*ate la timpul e!ecului' , treia condiie de )nscriere a buferelor este limitarea volumurilor buferelor ba&ei de date !i a 1urnalului de tran&acii' (eriodic sau la apariia cruiva ca& "de e*emplu, numrul paginelor )n lista % dirty este mai mare ca careva numr fi*at, sau numrul paginelor libere )n bufer este tare mic$ sistemul prime!te a!a numitul punct de control' (rimirea punctului de control const )n )nscrierea )n memoria e*tern a coninutului buferelor ba&ei de date !i scrierea fi&ic special a scrierea punctului de control, care este lista tuturor tran&acii e*ecutate )n acest moment' Se dovede!te c cerina minimal, ce garantea& posibilitatea restabilirii ultimei stri coordinate a 0#, este )nscrierea la fi*area tranzaciilor n memoria extern a jurnalulului a tuturor nregistrrilor despre modificarea bazei de datea acestei tranzacii' -ltima )nregistrare )n 1urnalul, efectuat din numele aceste tran&acii, este scrierea special despre sf.r!itul acestei tran&acii' Revenirea Individual a tranzaciei (entru a putea efectua conform 1urnalului de tran&acii revenirea individual a tran&aciei, toate )nregistrrile )n 1urnal de la aceast tran&acie se scriu )ntr-o list invers' nceputul listei pentru tran&aciile neterminate este scrierea despre ultima modificare a 0#, efectuat de aceast tran&acie' (entru tran&aciile finisate )nceputul listei este scrierea despre finisarea tran&aciei, care obligatoriu a )nscris )n memoria e*tern a 1urnalului' Sf.r!itul listei tot timpul serve!te prima scriere despre modificarea 0#, efectuat de aceast tran&acie' n fiecare )nregistrare este un numr de system unic al tran&aciei, pentru a putea restabili lista direct a )nregistrrilor despre modificarea ba&ei de date de aceast tran&acie' 3evenirea =ndividual a tran&aciei se e*ecut astfel 4 Se anali&ea& lista )nregistrrilor, create de aceast tran&acie )n 1urnalul de tran&acii "de la ultima la prima modificare$' Se selectea& scrierea din lista acestei tran&acii' Se e*ecut operaia invers dup sens4 )n loc de operaia =/S93B se e*ecut ce corespunde operaia #9L9B9, )n loc de operaiei #9L9B9 se e*ecut =/S93B, !i )n loc de operaia direct -(#,B9 operaia invers -(#,B9, restabilind starea precedent a obiectului 0#' 5ricare din aceste operaii inverse se scriu )n 1urnal de asemenea' ,ceasta este necesar de fcut, pentru c )n timpul e*ecutrii revenirii individuale se poate )nt.mpla satrea de refu&, la restabilire dup care va trebui de revenit aceast tran&acie, pentru care nu sa efectuat complet revenirea individual' (agina 2 din @ Conspect la MySQL 24 La finisarea cu succes a revenirii )n 1urnal se introduce scrierea despre sf.r!itul tran&aciei'
Restabilirea dup eec uor /ect.nd la protocolul C,L, dup e!ec u!or nu toate paginele fi&ice a ba&ei de date conin date modificate, fiindc nu toate paginele :murdare; a ba&ei de date au fost )nscrise )n )n memoria e*tern' -ltimul moment, c.nd garantat au fost )nscrise paginele :murdare;- este momentul primirii ultimului punct de control' 9*ist @ variante de stare a tran&aciilor referitor la momentul ultimului punct de control !i )n momentului e!ecului4 Figura 1 Cinci variante a tranzaciilor -ltimul punct de control a fost primit )n momentul tc' 3efu&ul sistemei a avut loc )n momentul tf' Bran&aciile B<-B@ se caracteri&ea& prin urmtoarele proprieti4 %& - tran&acia cu succes a finisat p.n la primirea punctului de control' Boate datele acestei tran&aciisunt pstrate )n memoria de lung durat % cum )nregistrrile 1urnalului, a!a !i paginele datelor, modificate de aceast tran&acie' (entru tran&acia B< operaii pentru revenire nu se cer' %' - tran&acia este )nceput )nainte de primirea punctului de control !i cu succes e finisat, dup punctul de control, dar p.n la apariia e!ecului' nregistrrile 1urnalului tran&aciei, referitoare la aceast tran&acie sunt )nscrise )n memoria e*tern' (aginele datelor, modificate de aceast tran&acie, numai parial sunt )nscrise )n memoria e*tern' (entru aceast tran&acie este necesar de repetat din nou acele operaii, care au fost efectuate dup primirea punctului de control' %( - tran&acia este )nceput p.n la primirea punctului de control !i nu este finisat din motivul e!ecului' ,!a tran&acie este necesar de revenit' (roblema este )n faptul, c o parte a paginelor datelor, modificate de aceast tran&acie, deacum se conine )n memoria e*tern % acestea sunt acele pagine, care au fost modificate p.n la primirea punctului de control' -rme de modificri, introduce dup punctul de control )n ba&a de datelor nu sunt' nregistrrile 1urnalului de tran&acii, efectuate p.n la primirea punctului de control, sunt )nscrise )n memoria e*tern, acele )nregistrri a 1urnalului, care au fost effectuate dup punctul de control, lipsesc )n memoria e*tern a 1urnalului' %) - tran&acia este )nceput dup primirea punctului de control !i cu succes este finisat p.n la e!ecul sistemului' nregistrrile 1urnalului de tran&acii, referitoare la aceast tran&acie sunt )nscrise )n memoria e*tern a 1urnalului' Modificrile )n ba&a de date, effectuate de aceast tran&acie, lipsesc )n memoria e*tern a 0#' ,ceast tran&acie este necesar de repetat )n )ntregime' %* - tran&acia este )nceput dup primirea punctului de control !i nu este finisat )n re&ultatul e!ecului' /ici o urm despre aceast tran&acie nu sunt nici )n memoria e*tern a (agina D din @ Conspect la MySQL 24 1urnalului de tran&acii, nici )n memoria e*tern a 0#' (entru a!a tran&acie nu trebuie de )ntreprins nimic' Cum ar fi c ea nici nu a fost )n genere' 3estabilirea sistemei dup e!ec u!or se efectua& ca parte a procedurii de restartare a sistemului' La restartarea sistemei tran&aciile B2 !i B4 este necesar parial sau total de repetat, tran&acia BD - parial de revenit, pentru tran&aciile B< !i B@ nu trebuie de )ntreprins nimic'' La restartare sistemul e*ecut urmtoarele4 Se crea& dou liste a tran&aciilor -/#5 "anulat$ !i 39#5 "de repetat$' n lista -/#5 se )nscriu toate tran&aciile din ultimele )nregistrri a punctului de control "adic toate tran&aciile, e*ecutate )n timpul primirii punctului de control $' Lista 39#5 r)m.ne goal' n ca&ul nostru va fi4 -/#5 E FB2, BDG, 39#5 E F G' ncep.nd cu )nregistrrile punctului de control se rsfoie!te )nainte 1urnalul de tran&acii' #ac )n 1urnalul dH tran&acii se observ scrierea despre )nceputul tran&aciei, atunci aceast tran&aciese adaug )n lista -/#5' n ca&ul nostru va fi4 -/#5 E FB2, BD, B4G, 39#5 E F G' ,tragem atenia, c urme ale tran&aciei B@ )n 1urnalul dH tran&acii /- sunt' #ac )n fi!ierului de )nregistrare se observ scrierea C5MM=B despre finisarea tran&aciei, atunci aceast tran&acie se adaug )n lista 39#5' n ca&ul nostru va fi4 -/#5 E FB2, BD, B4G, 39#5 E FB2, B4G' ,tragem atenia, c )nregistrrile despre finisarea acestor tran&acii sunt )n memoria e*tern a 1urnalului de tran&acii conform cerinelor minimale de )nscriere a )nregistrrilor )n 1urnalul la fi*area tran&aciei' C.nd se a1unge la sf.r!itul 1urnalului de tran&acii, ambele liste se anali&ea&' #in lista -/#5 se lic+idea& acele tran&acii, care sunt )n lista 39#5' n ca&ul nostru va fi4 -/#5 E FBDG, 39#5 E FB2, B4G' #up aceasta sistemul anali&ea& 1urnalul tran&aciilor )napoi, ncep.nd cu momentul punctului de control revin toate tran&aciile din lista -/#5' n ca&ul nostru vor reveni acele operaii a tran&aciei BD, care au fost e*ecutate p.n la primirea punctului de control' La sf.r!it, sistemul anali&ea& 1urnalul tran&aciilor )nainte, ncep.nd cu momentul punctului de control, !i repetat e*ecut toate operaiile tran&aciei din lista 39#5' n ca&ul nostru, sistemul va e*ecuta repetat toate operaiile tran&aciei B4 !i acele operaii a tran&aciei B2, care au fost e*ecutate dup primirea punctului de control' Restabilirea dup eecul complicat al sistemului n ca&ul e!ecului complicat al sistemului ba&a de date pe disc se stric fi&ic' 0a&a restabilirii )n acest ca& este Iurnalul tran&aciilor !i copia ar!ivat a +,. Copia ar+ivat a ba&ei de date trebuie s fie creat periodic, )n dependen de vite&a de umplere a 1urnalului de tran&acii' 3estabilirea )ncepe cu copierea invers a ba&ei de date din ar+iv' ,poi se e*ecut anali&a 1urnalului de tran&acii pentru gsirea tuturor tran&aciilor, care sau terminat cu succes pn la eec' #up aceasta conform 1urnalului tran&aciilor )n mod direct se repet toate tran&aciile terminate cu succes' /u este necesar de revenire a tran&aciilor, oprite )n timpul e!ecului, fiindc modificrile, effectuate de aceste tran&acii, lipsesc dup restabilirea ba&ei de date din copia de re&erv' 5 situaie mai rea este ?JKLMNJO, c.nd sunt stricate !i ba&a de date, !i 1urnalul tran&aciilor' n acest ca& unica, ce se poate de fcut % de a restabili starea ba&ei de date )n momentul ultimei copii de re&erv' (entru a nu a1unge la a!a ca&uri 0# !i 1urnalul tran&aciilor de obicei se pstrea& pe diferite discuri fi&ice, diri1ate de diferite controlere fi&ice' Restabilirea datelor i SQ standard Standardul limba1ului SQL nu conine cerine ctre restabilirea datelor, ls.nd aceste )ntrebri la discreia elaboratorilor S70#' Concluzii (rincipala cerin pentru longevitatea datelor tran&acii const )n faptul, c datele tran&aciilor fi*ate trebuie s se pstre&e )n sistem, c+iar dac )n urmtorul moment se va produce e!eculsistemei' (strarea datelor cu surplus, ce permite restabilirea sistemului dup e!ec de obicei asigur $urnalul tranzacilori. (agina 4 din @ Conspect la MySQL 24 3estabilirea ba&ei de date poate fi efectuat )n urmtoarele ca&uri4 Revenirea -ndividual a tranzaciei. Re.uz de sistem (re.uzul avariat al programelor/. Eec complicat al sistemului "re.uzul avariat al te!nicii$' (aginele ba&ei de date !i a 1urnalului de tran&acii nu se sciu )ndat pe disc, dar preventive se scriu )n buferele memoriei operative' (aginele 0#, coninutul crora )n bufer se deosebesc de coninutul pe disc, se numesc pagini "murdare" (dirty/' Scrierea paginelor :murdare; din bufer pe disc se nume!te nscrierea paginelor n memoria extern. (rincipiul de ba& al politicii de coordonare a )nscrierii buferului 1urnalului !i a buferelor paginelor ba&ei de date este protocolul de 1urnali&are Write !ead "og "W"$ - Ascrie dint#i n $urnal A' Condiia minimal ce garantea& posibilitatea restabilirii ultimei stri coordinate a 0#, este nscrierea la fixarea tranzacilor n memoria extern a jurnalului a tuturor nregistrrilor despre modificarea bazei de datede ctre aceast tranzacie. 3evenirea =ndividual a tran&aciei se e*ecut prin intermediul 1urnalului de tran&acii' 3estabilirea sistemului dup e!ec u!or se efectua& ca parte a procedurii de restartarea sistemului' La restartarea sistemului tran&aciile trec procedura de identificare pentru a depista tran&aciile finisate !i cele )ntrerupte )n timpul e!ecului' Bran&aciile, finisate cu succes p.n la e!ec !i datele despre care lipsesc )n ba&a de date, se repet' 3estabilirea sistemuluidup e!ecul complicat al sistemului se e*ecut prin intermediul copiei de ar+iva ba&ei de date !i a 1urnalului tran&aciilor' (agina @ din @