Documente Academic
Documente Profesional
Documente Cultură
ADMINISTRAREA TRANZACIILOR
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
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 opera iilor 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, cre te 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:
1 anomalia de actualizare pierdut
2 anomalia de citire improprie
3 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. Totu i, 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 tranzac ie 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.
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)
Dezavantaje:
1 tranzaciile blocheaz unele dintre unitile de acces pe o durat mai mare dect este
necesar, ceea ce reduce nivelul de concuren al sistemului.
2 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.
3 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 U1, U2, ..., Un 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:
1 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.
2 impune restricii programatorilor n elaborarea tranzaciilor. Cererile de acces la date
trebuie s respecte ordinea impus de sistem.
1 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.
2 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, tranzac ia 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.
S presupune c sunt trei tranzacii concurente (vezi tabelul urmtor) i c mrcile lor
de timp sunt la un anumit moment, n ordinea
MT1 < MT2 < MT3