Sunteți pe pagina 1din 9

6. OPERAII CONCURENTE ASUPRA BAZELOR DE DATE.

ADMINISTRAREA TRANZACIILOR

Reamintim c un obiectiv major al SGBD este de a permite mai multor utilizatori s
acceseze concurent datele partajate. Dar la sistemele n care o BD este accesat simultan de
mai muli utilizatori apar situaii de conflict datorate accesului concurent la datele care
constituie resurs comun. Modul de rezolvare al conflictului depinde de natura cererilor de
acces la date:
Dac cererile de acces sunt de tip regsire, atunci secvenialitatea accesului la mediul de
memorare este suficient i nu mai este nevoie de precauii suplimentare. Att timp ct
nici unul nu face modificri ale datelor, nu are importan ordinea n care se asigur
accesul utilizatorului la date. Deci, n acest caz, rezolvarea situaiilor conflictuale cauzate
de operaiile de citire simultan poate fi lsat n seama sistemului de operare, care
stabilete ordinea de satisfacere a cererilor dup criteriul asigurrii concurenei maxime
de operare, minimiznd timpul global de satisfacere a acestor cereri.
Dac unele cereri sunt de tip actualizare, este necesar aplicarea unor strategii adecvate
de tratare a cererilor de acces. Exemplu tipic: sistemele de rezervare a locurilor n care
mai muli ageni fac permanent modificri. Pericolul: dou procese, care citesc i
modific valoarea aceluiai obiect ar putea interaciona atunci cnd sunt executate
simultan. Rezult necesitatea impunerii unor restricii asupra execuiei concurente a
proceselor care fac operaii de citire i modificare a datelor. O rezolvare imediat i
simpl ar fi blocarea BD pe durata rezolvrii unei cereri. Dar asta echivaleaz cu blocarea
concurenei i degradarea performanelor sistemului, fcndu-l uneori neutilizabil.

n proiectarea SGBD se caut algoritmi care s permit un nalt grad de concuren. Algoritmii
de control ai concurenei pentru operaiile efectuate asupra BD se mpart n 2 clase:
1. algoritmi de control prin blocare
2. algoritmi de control prin marcare
6.1 Tranzacii i uniti de acces
Se numete tranzacie orice execuie a unui program. Programele pot fi de la simple
interogri, pn la proceduri complexe, cu multe interogri ori modificri ale BD. Pot exista mai
multe execuii independente ale aceluiai program i fiecare dintre acestea este o tranzacie.
D.p.d.v. al utilizatorului, o tranzacie este o unitate singular de execuie care satisface
dou condiii referitoare la BD:
BD este ntr-o stare coerent naintea i dup execuia tranzaciei.
BD poate fi ntr-o stare necoerent n timpul execuiei unei tranzacii.
O tranzacie poate avea dou rezultate:
1. dac este completat cu succes, se spune c tranzacia a fost efectuat iar
BD ajunge ntr-o nou stare coerent;
2. dac nu este executat cu succes, ea este abandonat iar BD trebuie
refcut n starea coerent dinainte. O astfel de tranzacie este rulat napoi
sau abandonat.
O tranzacie efectuat nu mai poate fi abandonat.
Pentru a delimita tranzaciile, n majoritatea limbajelor de manipulare a datelor sunt
disponibile instruciunile BEGIN TRANSACTION, COMMIT i ROLLBACK. Dac
utilizatorul nu folosete aceste delimitri, de obicei ntregul program este considerat ca
reprezentnd o singur tranzacie iar SGBD execut automat o instruciune COMMIT atunci
cnd programul este ncheiat corect, sau una ROLLBACK n caz contrar.
BEGIN TRANSACTION ncepe o nou tranzacie
COMMIT salveaz orice schimbri i ncheie tranzacia curent
ROLLBACK anuleaz orice schimbri fcute n timpul tranzacei curente i ncheie
tranzacia
Odat folosit instruciunea BEGIN TRANSACTION orice actualizare nu va fi
executat instantaneu, ci numai dup COMMIT sau ROLLBACK pentru a ncheia tranzacia.
Proprietile tranzaciilor
Exist o serie de proprieti pe care trebuie s le aib toate tranzaciile. Cele patru
proprieti fundamentale, aa-numitele acid, sunt:
1. caracterul atomic: reprezint proprietatea tot sau nimic. O tranzacie este o unitate
indivizibil, care ori este efectuat n ntregime, ori nu este efectuat de loc;
2. coerena: o tranzacie trebuie s transforme BD dintr-o stare coerent n alt stare
coerent;
3. izolarea: tranzaciile sunt executate independent unele de altele. Efectele pariale ale
unei tranzacii incomplete nu trebuie s fie vizibile pentru alte tranzacii;
4. durabilitatea: efectele unei tranzacii ncheiate cu succes sunt nregistrate definitiv n
BD i nu trebuie pierdute din cauza unei pene ulterioare.

O BD este partiionat n mai multe uniti de acces (items). Acestea sunt poriuni ale
BD care pot constitui obiectul unei operaii de blocare (lock). Prin blocarea unei uniti de
acces, o tranzacie poate mpiedica accesul altor tranzacii la unitatea blocat, pn la
momentul deblocrii acestei uniti de ctre tranzacia care a efectuat blocarea.
Gestiunea operaiilor de blocare precum i arbitrarea cererilor de blocare venite din
partea tranzaciilor este realizat de o component special a SGBD, numit lock manager.
Natura i dimensiunea unitilor de acces este stabilit de proiectantul sistemului. De
ex, n cazul modelului de date relaional, unitile de acces pot fi de dimensiuni foarte variate,
cuprinznd relaii ntregi ale BD, grupuri de tuple, tuple individuale sau chiar componente
ale tuplelor.
Prin alegerea unitilor de acces de mari dimensiuni, se reduce numrul operaiilor de
blocare, ceea ce nseamn reducerea timpului consumat de sistem pentru gestiunea acestor
operaii, precum i reducerea spaiului de memorie necesar nregistrrii blocajelor.
n schimb, folosind uniti de acces de mici dimensiuni, crete gradul de concuren
suportat de sistem, deoarece pot fi executate n paralel un numr mai mare de tranzacii care
opereaz n uniti de acces diferite.
n practic, dimensiunea potrivit a unitilor de acces este dat de extinderea operaiilor
efectuate de tranzaciile cu cea mai mare frecven. Astfel, dac tranzacia tipic presupune
efectuarea unor operaii de cuplare, atunci unitatea de acces va fi relaia. Dac, ns, majoritatea
tranzaciilor efectueaz operaii asupra unor tuple individuale, atunci va fi convenabil s se
aleag tupla ca unitate de acces.
6.2 Anomalii de interferen
Interaciunea necontrolat a dou sau mai multe tranzacii poate duce la apariia unor stri
inconsistente ale BD i la producerea unor rezultate eronate. Dou tranzacii Ti i Tj sunt
susceptibile de interferen dac rezultatul execuiei lor concurente poate fi diferit de
rezultatul execuiei seriale.
ntre dou tranzacii poate s apar o interferen dac acestea efectueaz operaii asupra
unor date comune. Dac aceste dou tranzacii sunt executate n mod concurent, atunci spunem
c sunt conflictuale.
Deci dou tranzacii Ti i Tj sunt conflictuale dac sunt concurente i susceptibile de
interferen.
n funcie de natura operaiilor pe care le efectueaz asupra datelor comune, ntre dou
tranzacii pot s apar mai multe tipuri de interferene care provoac anomalii de interferen:
anomalia de actualizare pierdut
anomalia de citire improprie
anomalia de citire irepetabil (citire murdar)
6.2.1 Anomalia de actualizare pierdut
Corespunde unui conflict de tip scriere-scriere i const n faptul c rezultatul
actualizrii efectuate de o tranzacie se pierde ca urmare a reactualizrii aceleiai date de ctre o
alt tranzacie, fr ca reactualizarea s fie influienat de rezultatul primei actualizri.
Exemplu: fie urmtoarea execuie concurent a dou tranzacii T1 i T2.
Observaie: n acest capitol vom nota simbolic operaiile de citire
i scriere a unui atribut X din BD prin Read X, respectiv Write X.
T1 T2
Read A
Read A
A = A + 5
Write A
A = A + 10
Write A
n urma acestor tranzacii valoarea lui A apare mrit cu 10, nu cu 15 aa cum ar fi de ateptat.
Este ca i cum tranzacia T1 nici nu s-ar fi executat.
6.2.2 Anomalia de citire improprie
Corespunde unui conflict de tip scriere-citire i apare atunci cnd o tranzacie surprinde
o stare temporar inconsistent a BD.
Exemplu: fie urmtoarea execuie concurent a dou tranzacii T1 i T2.
T1 T2
Read A
A = A - 10
Write A
Read A
Read B
C = A + B
Write C
Read B
B = B + 10
Write B
n urma acestor tranzacii valoarea sumei A + B este neschimbat. Intenia era de a reine n C
valoarea acestei sume, dar datorit interferenei, valoarea din C este cu 10 mai mic dect cea
real.
6.2.3 Anomalia de citire irepetabil
Corespunde unui conflict de tip citire-scriere i apare atunci cnd aceeai tranzacie
gsete valori diferite la citiri repetate ale aceleiai date.
Exemplu: fie urmtoarea execuie concurent a dou tranzacii T1 i T2.
T1 T2
Read A
B = A
Write B
Read A
A = A + 10
Write A
Read A
C = A
Write C
Se observ c, dei valorile rezultate pentru B i C ar trebui s fie egale n urma execuiei
tranzaciei T1, ele sunt diferite din cauza interferenei cu tranzacia T2.
6.3 Primitivele LOCK i UNLOCK
Fie tranzaciile T1 i T2 execuii diferite ale urmtoarei secvene de operaii:
Read A
A = A + 1
Write A
unde A este o valoare existent n baz. Fiecare din cele dou tranzacii citete valoarea lui A
ntr-o zon de lucru proprie, adun 1 la aceast valoare i apoi scrie rezultatul n baza de date.
Dup execuia tranzaciilor, este de ateptat ca valoarea lui A s fie mrit cu 2. Totui, dac
tranzaciile sunt executate concurent, este posibil ca rezultatul final s fie altul, funcie de modul
de interferen a tranzaciilor.
Cea mai simpl metod de evitare a situaiilor de genul celei prezentate, este de a
permite accesul la valoarea lui A numai pentru o singur tranzacie, pe toat durata executrii
tranzaciei. Accesul celorlalte tranzacii va fi temporar blocat. Acest lucru se poate realiza
folosind dou funcii primitive LOCK (A) i UNLOCK (A). Aceste funcii se numesc
primitive, deoarece secvena de operaii corespunztoare execuiei lor nu poate fi ntrerupt de
alte operaii. LOCK (A) i UNLOCK (A) sunt operaii indivizibile.

Dac o tranzacie Tk execut cu succes o primitiv LOCK (A), atunci componenta lock
manager a SGBD asigur accesul exclusiv al tranzaciei Tk la valoarea A, interzicnd accesul la
aceast valoare a oricrei alte tranzacii atta timp ct tranzacia Tk nu elibereaz valoarea A
prin execuia primitivei UNLOCK (A). Se spune c valoarea A este blocat n acest interval de
timp. O tranzacie poate executa cu succes o primitiv LOCK() doar asupra unei valori care nu
este blocat. n acest caz valoarea returnat de funcia LOCK() este TRUE. Orice tentativ de a
executa primitiva LOCK() asupra unei valori blocate va eua, valoarea returnat fiind FALSE.
Acesta este cel mai simplu mecanism de a asigura excluderea mutual.

Primitivele LOCK() i UNLOCK() pot fi folosite pentru realizarea mecanismelor de
sincronizare a tranzacilor. Dac o tranzacie dorete s acceseze o anumit valoare, ea va trebui
s obin accesul exclusiv la aceasta, prin executarea unei primitive LOCK(). Dac valoarea este
blocat, atunci accesul exclusiv va fi refuzat, iar tranzacia va trebui s atepte pn la deblocarea
aceste valori. Orice tranzacie care a executat cu succes o primitiv LOCK() asupra unei valori,
va trebui s execute primitiva UNLOCK() asupra aceleiai valori nainte de a-i ncheia execuia.
Ordonarea secvenial a pailor a dou sau mai multe tranzacii care respect regulile de mai sus,
se spune c este legat.
Pentru tranzaciile T1 i T2 considerate anterior, secvena de pai folosind primitivele
LOCK() i UNLOCK() este urmtoarea:
While NOT(LOCK(A))
Read A
A = A + 1
Write A
UNLOCK(A)
Dac una dintre tranzacii, s zicem T1, obine accesul exclusiv la valoarea A, atunci tranzacia
T2 va trebui s atepte terminarea complet a lui T1 pentru a obine accesul la valoarea A. La
terminarea tranzaciei T1 valoarea lui A este mrit cu 1, iar la terminarea tranzaciei T2,
valoarea lui A va fi mrit cu 2.
Rezultatul este corect, dar execuia este pur secvenial, nu este posibil nici un fel de
paralelism ntre cele dou tranzacii. D.p.d.v. al timpului de execuie, aceast situaie este
inacceptabil i de aceea se folosesc algoritmi care s relizeze ordonri secveniale legate, cu
un grad de concuren a execuiei ct mai ridicat, dar i cu garania obinerii de rezultate corecte.

6.4 Interblocarea
Unul dintre principalele obiective ale oricrui sistem concurent este folosirea n comun a
resurselor, adic partajarea acestora. n cazul bazelor de date concurente, cea ai important
resurs partajabil o constituie datele. Atunci cnd datele sunt partajate de ctre un grup de
tranzacii concurente i fiecare tranzacie deine controlul exclusiv al unor date particulare, este
posibil s se ajung la situaia n care unele tranzacii nu-i vor putea termina niciodat execuia.
Exemplu. Fie dou tranzacii T1 i T2 definite prin dou secvene de forma:

T1 T2
While NOT (LOCK(A)) While NOT (LOCK(B))
While NOT (LOCK(B)) While NOT (LOCK(A))
... ...
Prelucrare 1 Prelucrare 1
... ...
UNLOCK(A) UNLOCK(B)
UNLOCK(B) UNLOCK(A)

Presupunem c tranzaciile T1 i T2 i ncep execuia aproximativ n acelai moment. T1 cere i
obine blocarea lui A iar T2 cere i obine blocarea lui B. Apoi T1 cere bocarea lui B, dar este
pus n ateptare deoarece unitatea de acces B este bocat de tranzacia T2. Concomitent, T2
cere blocarea lui A i este pus n ateptare pn cnd T1 deblocheaz pe A, dar T1 ateapt
deblocarea lui B de ctre T2. n consecin, nici una dintre tranzacii nu-i poate continua
execuia, ambele fiind puse n ateptare la nesfrit. O astfel de situaie se numete interblocare.
ntr-o situaie de interblocare pot fi implicate un numr mai mare de tranzacii care se
ateapt reciproc. Interblocarea este o problem comun tuturor sistemelor concurente. Pentru
rezolvarea ei exist dou categorii de metode:
1. metode de prevenire i evitare a interblocrii
2. metode de detecie i ieire din interblocare

Condiii pentru interblocare
ntr-un sistem concurent, poate apare situaia de interblocare numai dac sunt satisfcute
simultan urmtoarele 4 condiii:
1. condiia de excludere mutual tranzaciile solicit controlul exclusiv al unitilor de
acces asupra crora opereaz
2. condiia de ateptare pentru o tranzacie care deine controlul exclusiv asupra unor
uniti de acces este n ateptare pentru altele
3. condiia de completare nici o unitate de acces nu poate fi deblocat de ctre tranzacia
care o controleaz nainte ca aceasta s termine toate operaiile pe care le are de executat
asupra unitii respective
4. condiia de ateptare circular exist un lan circular de tranzacii cu proprietatea c
fiecare tranzacie deine controlul asupra unei uniti de acces solicitat de urmtoarea
tranzacie din lan.
Nesatisfacerea oricreia din cele 4 condiii de mai sus face imposibil interblocarea, deci,
negarea fiecrei condiii ar putea sta la baza unei metode de prevenire a interblocrii.
Negarea condiiei 1 conduce la observaia c nu poate apare interblocare n cazul tranzaciilor
care nu solicit accesul exclusiv la unitile de acces. n cazul execuiei concurente a unui set de
tranzacii care efectueaz numai operaii de citire nu poate apare interblocare.
Negarea condiiei 2 conduce la o metod de prevenire a interblocrii care are la baz alocarea
unitilor de acces dup criteriul tot sau nimic, numit metoda cererilor anticipate.
Negarea condiiei 3 conduce la o metod de detecie i ieire din interblocare care presupune
abandonarea (renunarea) unora dintre tranzaciile aflate n interblocare la un moment dat.
Negarea condiiei 4 conduce la o metod de prevenire a interblocrii bazat pe ordonarea
unitilor de acces, numit metoda ordonrii.
6.4.1 Metoda cererilor anticipate
Blocarea unitilor de acces de ctre tranzacii se face dup regula tot sau nimic. Fiecare
tranzacie emite deodat, toate cererile de blocare necesare execuiei sale complete, n mod
anticipat, nainte de a executa orice operaie de actualizare. Sistemul accept sau respinge aceste
cereri n bloc. Nu este posibil ca o tranzacie s obin blocarea unei pri a unitilor pe care
dorete s le acceseze, pentru ca pe parcurs s emit alte cereri d blocare. Astfel, nici o tranzacie
care a obinut blocarea unor uniti de acces nu va putea fi pus n ateptare.

Dezavantaje:
tranzaciile blocheaz unele dintre unitile de acces pe o durat mai mare dect este
necesar, ceea ce reduce nivelul de concuren al sistemului.
favorizeaz apariia fenomenului de amnare nedefinit sau infometare a
tranzaciilor. Tranzaciile care solicit accesul la un numr mai mare de uniti de
acces ar putea fi meninute n ateptare un timp nedefinit, deoarece este puin probabil
ca resursele solicitate s se disponibilizeze toate n acelai moment. Aceste tranzacii
au anse mult mai mici de a fi lansate n execuie, fa de tranzaciile care solicit mai
puine resurse.
exist situaii cnd aceast tehnic nu este aplicabil. Este posibil ca pentru o
tranzacie care blocheaz dou uniti de acces s nu se poat preciza de la nceput
care sunt acestea. Identificara celei de-a doua uniti de acces poate s depind de
anumite valori din prima unitate de acces i deci blocarea ei nu se poate face dect
dup ce s-a accesat prima unitate.
6.4.2 Metoda ordonrii
Metoda ordonrii const n stabilirea unei relaii de ordine peste mulimea unitilor de acces.
Tranzaciile pot bloca unitile de acces numai n aceast ordine prestabilit.
Fie U
1
, U
2
, ..., U
n
unitile de acces a cror ordonare este dat prin valoarea indicilor
asociai. Presupunem c fiecare tranzacie blocheaz unitile de acces n ordinea cresctoare a
indicilor. Dac o tranzacie Tx a blocat o unitate Ui, atunci T nu poate fi pus n ateptare dect
pentru o unitate Uj, cu j>i. Dar o alt tranzacie Ty care a blocat Uj nu poate fi n ateptare
pentru Ui, deoarece i<j. Deci interblocarea nu este posibil.

Dezavantaje:
Afecteaz deasemenea nivelul de concuren al sistemului prin blocarea mai mult
dect este necesar al unor uniti de acces. Fie, de ex, o tranzacie care dorete accesul
pentru o durat scurt de timp la unitatea Ui i un timp mai lung la unitatea Uj. Dac
i<j, atunci unitatea Ui va trbui s fie blocat pe toat durata blocrii lui Uj.
impune restricii programatorilor n elaborarea tranzaciilor. Cererile de acces la date
trebuie s respecte ordinea impus de sistem.
n cazul BD complexe, realizarea unei ordonri a unitilor de acces poate fi foarte
dificil (nu imposibil), din cauza posibilitilor foarte variate de divizare n uniti de
acces.
Acest metod presupune existena aprioric a unei asemenea divizri, ceea ce exclue
posibilitatea blocrilor
6.5 Marcarea timpului
Metodele de marcare a timpului pentru controlul concurenei sunt destul de diferite de
metodele de blocare. Nu este implicat nici o blocare, deci nu pot apare situaii de impas
(interblocare).
Marca de timp este un identificator unic creat de SGBD, care indic timpul relativ de
ncepere a unei noi tranzacii. Mrcile de timp pot fi generate folosind ceasul sistemului sau prin
declanarea unui contor logic.
Marcarea timpului este un protocol de control al concurenei, n scopul ordonrii
globale a tranzaciilor astfel nct, tranzaciile mai vechi (cu mrci de timp mai mici) s aib
prioritate, n eventualitatea unui conflict.
Dac o tranzacie ncearc s citeasc sau s scrie o dat, aceste operaii sunt permise
numai dac ultima reactualizare a respectivei date a fost efectuat de o tranzacie mai veche.
Altfel, tranzacia care necisit operaia de citire/scriere este renceput i i se atribuie o nou
marc de timp. Este necesar ca tranzaciilor rencepute s li se atribuie noi mrci de timp, pentru
a evita s fie ncontinuu abandonate i rencepute.

Regula de scriere a lui Thomas
Pentru a obine o concuren ct mai mare prin respingerea operaiilor scoase din uz, se
poate utiliza o modificare a protocolului de ordonare a mrcilor de timp:
Dac tranzacia T ncearc s scrie un articol x a crui valoare a fost deja citit de
ctre o tranzacie mai nou, tranzacia T trebuie rulat napoi i renceput cu o
nou marc de timp;
Dac tranzacia T ncearc s scrie un articol x a crui valoare a fost deja scris
de ctre o tranzacie mai nou, operaia de scriere poate fi ignorat, pentru c
valoarea pe care tranzacia T vrea s o scrie se bazeaz pe o valoare veche a
articolului x, valoare scoas deja din uz.

S presupune c sunt trei tranzacii concurente (vezi tabelul urmtor) i c mrcile lor de
timp sunt la un anumit moment, n ordinea
M
T1
< M
T2
< M
T3

La momentul t
8
, operaia de scriere a tranzaciei T2 violeaz regula de scriere a mrcilor de timp
i drept urmare este abandonat i renceput la momentul t
14
.
La momentul t
14
, operaia de scriere a tranzaciei T1 poate fi ignorat utiliznd regula de ignorare
a scrierilor scoase din uz, deoarece ar fi fost suprascris prin operaia de scriere a tranzaciei T3
de la momentul t
12
.


Timpul Operaia T1 T2 T3
t
1
Begin_trans
t
2
Read x Read x
t
3
x=x+10 x=x+10
t
4
Write x Write x Begin_trans
t
5
Read y Read y
t
6
y=y+20 y=y+20 Begin_trans
t
7
Read y Read y
t
8
Write y Write y
T
9
y=y+30 y=y+30
t
10
Write y Write y
t
11
z=100 z=100
t
12
Write z Write z
t
13
z=50 z=50 Commit
t
14
Write z Write z Begin_trans
t
15
Read y Commit Read y
t
16
y=y+20 y=y+20
t
17
Write y Write y
t
18
Commit
6.6 Refacerea bazei de date
Refacerea bazei de date este procesul de restaurare a bazei de date ntr-o stare corect
dup apariia unei pene.
Cauzele penelor:
cderile sistemului (hard sau soft)
pene de mediu (distrugerea mediului de depozitare a datelor)
erorile soft de aplicaie
dezastre naturale
neglijena
sabotajul
Indiferent de cauz, exist dou efecte principale:
1. pierderea memoriei principale, inclusiv a bufferelor bazei de date
2. pierderea copiei de pe disc a bazei de date
Vom prezenta cteva concepte i tehnici prin care se pot minimiza aceste efecte i se
poate permite refacerea n urma unei pene.
Tranzacia reprezint unitatea de reface de baz dintr-un sistem de baze de date.
6.6.1 Tehnici de refacere
Procedura utilizat pentru refacerea bazei de date depinde de gradul de deteriorare. Sunt
posibile dou situaii:
dac baza de date a fost deteriorat fizic (cderea discului pe care este stocat
baza de date), este necesar s se restaureze ultima copie de siguran i s se
aplice din nou operaiile de reactualizare a tranzaciilor efectuate, folosind fiierul
jurnal
1
. Se recomand ca fiierul jurnal s fie stocat pe un disc separat, pentru a
reduce riscul deteriorrii lui simultan cu deteriorarea bazei de date;

1
Amintim c Securitatea datelor cere ca baza de date s fie protejat mpotriva unei distrugeri logice (anomalii de
actualizare) sau fizice. Pentru aceasta, exist instrumente care permit:
crearea unor puncte de repriz = salvarea din timp n timp a unor copii coerente ale bazei de date
gestiunea unui jurnal de tranzacii = lista operaiilor realizate asupra bazei de date dup ultimul punct
de repriz

dac baza de date nu a fost deteriorat fizic, ci a devenit incoerent datorit unei
cderi a sistemului n timpul execuiei unei tranzacii, nu este necesar utilizarea
copiei de siguran, ci poate fi restaurat utiliznd imaginile anterioare i
ulterioare coninute n fiierul jurnal.
Vom prezenta trei tehnici de refacere, cunoscute sub denumirile de reactualizare
amnat, reactualizare imediat i paginarea cu umbr.
a) Tehnica de refacere cu ajutorul reactualizrii amnate
Prin utilizarea acestui protocol, reactualizrile nu sunt scrise n baza de date dect dup ce
tranzacia a ajuns pe punctul de a fi efectuat. Dac tranzacia eueaz nainte de a ajunge n
acest punct, ea nu va fi modificat baza de date i astfel nu mai sunt necesare anulri sau
modificri. S-ar putea s fie nevoie doar s se reia reactualizrile tranzaciilor efectuate, deoarece
este posibil ca efectul acestora s nu fi ajuns la baza de date. Pentru aceasta se folosete jurnalul
de tranzacii.
b) Tehnica de refacere cu ajutorul reactualizrii imediate
Prin utilizarea acestui protocol, reactualizrile sunt aplicate pe baza de date imediat ce au loc,
fr a atepta ca tranzacia s ajung pe punctul de a fi efectuat. Pe lng reluarea
reactualizrilor efectuate, acum ar putea s fie necesar s se anuleze efectele tranzaciilor care nu
au fost efectuate n momentul n care a survenit pana. Pentru aceasta se folosete jurnalul de
tranzacii.
Este esenial ca nregistrrile din jurnal s fie scrise nainte descrierea corespunztoare n
baza de date. Aceast operaie e cunoscut sub denumirea de protocol de scriere n avans n
jurnal.
c) Paginarea cu umbr
Este o alternativ a tehnicilor care folosesc jurnalul de tranzacii. n cadrul acestei tehnici, n
timpul unei tranzacii se pstreaz dou tabele ale paginii: unul pentru pagina curent, unul
pentru pagina din umbr. La nceputul tranzaciei, cele dou pagini sunt identice. Pagina din
umbr nu se modific niciodat pe parcursul tranzaciei, n timp ce pagina curent reflect toate
reactualizrile fcute pe baza de date de ctre tranzacia respectiv. La ncheierea tranzaciei,
tabelul paginii curente devine tabelul paginii din umbr.
Avantaje:
eliminarea suprasarcinii datorat ntreinerii fiierului jurnal
refacerea mai rapid (pentru c nu sunt necesare operaii de anulare sau
reluare)
Dezavantaje:
fragmentarea datelor
necesitatea unei colectri periodice a gunoaielor.