Sunteți pe pagina 1din 35

Baze de date relat ionale

Managementul tranzact iilor


Nicolae-Cosmin V arlan

January 16, 2014

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Tranzact ii
O tranzact ie este o secvent a de operat ii ce formeaz a o unitate logic a de lucru.

Example
De exemplu, pentru a transfera $50 dintr-un cont ntr-altul poate denit a urm atoarea tranzact ie: read(A); A:=A-50; write(A); read(B); B:=B+50; write(B);

Ti :

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Operat ii considerate
Baza de date este situat a pe disc. Anumite port iuni se pot aa n memoria RAM (cele pe care se opereaz a). Sunt considerate dou a operat ii principale: read(X) - care transfer a elementul X din baza de date n buerul local (ce apart ine tranzact iei ce execut a operat ia de read); write(X) - care transfer a elementul X din buerul local tranzact iei napoi n baza de date. In realitate, o operat ie de tip write nu va scrie imediat pe HDD.

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Propriet a tile tranzact iilor (ACID)


Atomicity - toate act iunile dintr-o tranzact ie trebuie s a e efectuate sau, n caz contrar, baza de date trebuie s a revin a la starea originala; Consistecy - o tranzact ie executat a singura va modica, baza de date ntr-un mod consistent. Dac a dou a tranzact ii sunt executate simultan, este posibil ca rezultatul sa nu e cel a steptat; Isolation - chiar dac a mai multe tranzact ii sunt executate concurent, sistemul trebuie s a asigure c a oricare ar doua dintre acestea Ti si Tj , din punctul de vedere a lui Ti , e a nceput dup a ce Tj a fost executat a n ntregime, e prima linie din Tj va executat a dup a ce ultima sa linie s-a terminat de executat; Durability - dup a ce tranzact ia s-a ncheiat, schimb arile r am an permanente n sistem (chiar n cazul unui crash);
Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Consistecy
O tranzact ie executat a singur a va modica, baza de date ntr-un mod consistent. Dac a dou a tranzact ii sunt executate simultan, este posibil ca rezultatul s a nu e cel a steptat. Asigurarea consistent ei este obligat ia programatorului. In exemplul considerat, suma A + B trebuie s a r am an a constant a: read(A); A:=A-50; write(A); Ti : read(B); B:=B+50; write(B);

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Atomicity
Toate act iunile dintr-o tranzact ie trebuie s a e efectuate sau, n caz contrar, baza de date trebuie s a revin a la starea original a. Inconsistent ele n baza de date nu trebuie s a e vizibile n exterior. In exemplul considerat, dac a lu am A = 1000 si B = 2000, trebuie ca suma A + B s a e aceea si dup a terminarea tranzact iei. Ce se ntampl a dac a n timpul execut iei tranzact iei Ti are loc o pan a de curent ? read(A); A:=A-50; write(A); read(B); B:=B+50; write(B);
Nicolae-Cosmin V arlan Managementul tranzact iilor

Ti :

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Durability
Dup a ce execut ia s-a terminat si utilizatorul a fost informat c a tranzactia s-a efectuat cu succes, nimic nu poate aduce baza de date n starea anterioara tranzact iei sau ntr-o stare inconsistent a. read(A); A:=A-50; write(A); read(B); B:=B+50; write(B); Updateurile sunt efectuate nainte s a se termne tranzact ia. Informat ii suciente sunt nregistrate pentru a putea reface baza de date n caz de e sec (recovery-management component).
Nicolae-Cosmin V arlan Managementul tranzact iilor

Ti :

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Isolation
Problema apare atunci c and sunt executate mai multe tranzact ii simultan, operat iile put and n unele cazuri s a se intrep atrund a ntr-un mod ce ar da na ste la o stare inconsistent a. Spre exemplu, n timpul transferului dintre A si B sistemul trece printr-o stare inconsistent a (dup a ce s-a rescris A si nainte de rescrierea lui B). O a doua tranzact ie care ar citi A si B n aceasta stare inconsistent a ar putea considera valori eronate. Mai mult, dac a aceasta rescrie B nainte ca Ti s a citeasc a pe B, se poate ca baza de date s a r am an a ntr-o stare inconsistent a dup a execut ia lui Ti . O solut ie este executarea tranzact iilor n mod serial. Ordinea n care sunt executate act iunile din mai multe tranzact ii concurente este stabilit a de Concurency-control component.
Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Starea unei tranzact ii


Active - starea init ial a, tranzact ia st a n aceast a stare pe parcursul ntregii execut ii; Partially commited - dup a execut ia act iunii nale; Failed - dup a descoperirea c a execut ia normal a nu poate continua (din cauza unor e securi n hardware); Aborted - tranzact ia a fost rolled back; Commited - dup a nalizarea cu succes. Spunem despre o tranzact ie c a este terminat a dac a se a a e n starea de Aborted sau n Commited.

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Starea unei tranzact ii


In cazul de e sec tranzact ia poate : restarted (o tranzact ie repornit a este considerat a o nou a tranzact ie) killed (atunci c and e secul nu este unul hardware ci n logica tranzact iei sau din cauza c a datele nu au fost g asite) Observal external writes ! - numai n starea commited. Pentru rollback, se poate scrie (temporar) anumite informat ii privind tranzact ia, scrierea denitiv a av and loc atunci c and starea a devenit commit. Anumite situat ii sunt mai greu de prev azut (de exemplu n cazul unui bancomat).
Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Implementarea atomicit a tii


Atomicitatea poate realizat a prin utilizarea de copii de sigurant a (shadow copy) a bazei de date. Se presupune c a numai o singur a tranzact ie este activ a la un moment dat. Atomicitatea tranzact iei se reduce la atomicitatea scrierii pe disc a unui pointer c atre sierul reprezent and versiunea curent a a bazei de date (asigurat de SO). Sistemul a inspirat si anumite editoare de text (e.g. Word) care ofer a o copie de sigurat a a documentului pe care o salveaz a la intervale regulate de timp pentru a o putea restaura n cazul unei probleme. Minusuri: baze de date mari + tranzact ii concurente.
Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Execut ii concurente - motivat ie


Avantajele execut iilor concurente: utilizarea ecient a a resurselor; reducerea timpului de a steptare. Sistemul de baze de date trebuie s a controleze felul n care tranzact iile interact ioneaz a pentru a nu afectat a consistent a acesteia (Concurencty control schemes. . . ).

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Execut ii concurente
Fie urm atoarele dou a tranzact ii: read(A); A:=A - 50; write(A); read(B); B:=B + 50; write(B); read(A); temp:= A * 0.1; A := A - temp; write(A); read(B); B:=B + temp; write(B);

T1 :

T2 :

S a presupunem c a A = 1000 si B = 2000.

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

O posibil a execut ie (schedule 1)


T1 read(A); A:=A - 50; write(A); read(B); B:=B + 50; write(B); T2

read(A); temp:= A * 0.1; A := A - temp; write(A); read(B); B:=B + temp; write(B);


Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

O posibil a execut ie (schedule 2)


T1 T2 read(A); temp:= A * 0.1; A := A - temp; write(A); read(B); B:=B + temp; write(B);

read(A); A:=A - 50; write(A); read(B); B:=B + 50; write(B);


Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Schedule (programare)
Un schedule reprezint a o modalitate de a organiza secvent a de act iuni dintr-una sau mai multe tranzact ii. Un schedule trebuie s a p astreze ordinea act iunilor din ecare tranzact ie si trebuie s a cont in a toate act iunile existente n tranzact iile implicate. Cele dou a program ari prezentate sunt seriale deoarece nt ai este efectuat a o tranzact ie n ntregime apoi este efectuat a cea de-a doua tranzact ie. Pentru n tranzact ii pot construite n! program ari seriale diferite (permut arile celor n tranzact ii).

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

O posibil a executie (schedule 3) - suma A+B=constant a


T1 read(A); A:=A - 50; write(A); T2

read(A); temp:= A * 0.1; A := A - temp; write(A); read(B); B:=B + 50; write(B); read(B); B:=B + temp; write(B);
Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Schedule 4 (concurrency control component)


T1 read(A); A:=A - 50; T2

read(A); temp:= A * 0.1; A := A - temp; write(A); write(A); read(B); B:=B + 50; write(B); read(B); B:=B + temp; write(B);
Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Serializability
Care program ari asigur a consistent a si care nu ? Consider am doar dou a operat ii: read / write Schedule 3 va scris sub forma: T1 read(A); write(A); T2

read(A); write(A); read(B); write(B); read(B); write(B);


Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Conict serializability
Fie un schedule S av and dou a instruct iuni consecutive Ii si Ij din dou a tranzact ii diferite: Ti si Tj (i = j ). dac a Ii si Ij se refer a la componente diferite (de exemplu act iunea lui Ii peste A n timp ce Ij act ioneaz a asupra lui B ), putem interschimba Ii cu Ij . dac a Ii si Ij act ioneaz a peste acela si element atunci:
dac a Ii = read(Q) si Ij = read(Q), atunci Ii si Ij sunt interschimbabile; dac a Ii = read(Q) si Ij = write(Q), atunci Ii si Ij NU sunt interschimbabile (Tj inuent eaz a Ti ); dac a Ii = write(Q) si Ij = read(Q), atunci Ii si Ij NU sunt interschimbabile (Ti inuent eaz a Tj ); dac a Ii = write(Q) si Ij = write(Q), atunci Ii si Ij NU sunt interschimbabile (starea nal a a BD);
Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Conict serializability
Dou a act iuni Ii si Ij din dou a tranzact ii diferite: Ti respectiv Tj sunt n conict dac a ele se refer a la aceea si nregistrare si m acar una dintre cele dou a act iuni este de tip write. Ordinea a dou a act iuni ce nu sunt n conict poate interschimbat a f ar a a afecta rezultatul nal.

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Conict serializability
Schedule 5 este echivalent cu schedule 3: T1 read(A); write(A); read(B); write(A); write(B); read(B); write(B); Schedule 5 read(B); write(B); read(B); write(B); Schedule 3 T2 T1 read(A); write(A); T2

read(A);

read(A); write(A);

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Conict serializability
Sunt Schedule 1 si schedule 2 echivalente ? T1 read(A); write(A); read(B); write(B); T2 T1 T2 read(A); write(A); read(B); write(B);

read(A); write(A); read(B); write(B); Schedule 1

read(A); write(A); read(B); write(B); Schedule 2

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Conict serializability
Sunt Schedule 1 si schedule 3 echivalente ? T1 read(A); write(A); read(B); write(B); T2 T1 read(A); write(A); T2

read(A); write(A); read(A); write(A); read(B); write(B); read(B); write(B); read(B); write(B); Schedule 3

Schedule 1

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Conict serializability
Deoarece schedule 3 este echivalent din punctul de vedere al conictelor cu schedule 1 care este sub form a serial a, spunem despre schedule 3 c a este serializabil din punctul de vedere al conictelor (Conict serializability). Nu toate program arile sunt serializabile (schedule 7):

T3 read(Q); write(Q);

T4 write(Q);

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Sunt Schedule 8 si schedule T1 , T5 echivalente ? T1 read(A) A := A - 50 write(A) T5 T1 read(A) A := A - 50 write(A) read(B) B := B + 50 write(B) T5

read(B) B := B - 10 write(A) read(B) B := B + 50 write(B) read(A) A:= A + 10 write(A) Schedule 8


Nicolae-Cosmin V arlan

read(B) B := B - 10 write(A) read(A) A:= A + 10 write(A) Schedule T1 , T5


Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

View Equivalence
Dou a schedule S si S n care aceea si mult ime de tranzact ii este utilizat a sunt view equivalent dac a urm atoarele condit ii sunt ndeplinite: Pentru ecare element Q, dac a n S tranzact ia Ti cite ste valoarea init ial a a lui Q atunci Ti cite ste valoarea init ial a a lui Q si n S ; Dac a n S tranzact ia Ti cite ste valoarea lui Q scris a de c atre Tj atunci, si n S , Ti va citi valoarea lui Q dup a ce aceasta a fost scris a de Tj ; Pentru ecare Q, tranzact ia care efectueaz a ultima write(Q) n S va ultima ce efectueaz a write(Q) si n S . Schedule 1 si Schedule 2, de si sunt consistente, ele nu sunt echivalente din punctul de vedere al VE (View Equivalence). S1 este VE cu S3.
Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

T1 read(A); A:=A - 50; write(A); read(B); B:=B + 50; write(B);

T2

T1

read(A); temp:= A*0.1; A := A - temp; write(A); read(B); B:=B + temp; write(B); Schedule 1

T2 read(A); temp:= A*0.1; A := A - temp; write(A); read(B); B:=B + temp; write(B); read(A);

A:=A - 50; write(A); read(B); B:=B + 50; write(B); Schedule 2

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

T1 read(A); A:=A - 50; write(A); read(B); B:=B + 50; write(B);

T2

T1 read(A); A:=A - 50; write(A);

T3

read(A); temp:= A * 0.1; A := A - temp; write(A); read(B); B:=B + temp; write(B); Schedule 1

read(A); temp:= A * 0.1; A := A - temp; write(A); read(B); B:=B + 50; write(B); read(B); B:=B + temp; write(B); Schedule 3

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

View Serializable
Conceptul de View equivalent conduce la conceptul de View Serializable (dac a programarea este echivalent a din punct de vedere al view-ului cu una serial a). Exist a program ari care nu sunt CS(Conict Serializable) dar sunt VS(View Serializable) Schedule 9: T3 read(Q); write(Q); write(Q) T4 write(Q); T6

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Conict Serializable vs View Serializable


Orice programare CS este si VS. Exist a program ari care sunt VS dar nu sunt si CS.

Nicolae-Cosmin V arlan

Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Recoverability
Ce se nt ampl a n cazul n care avem mai multe tranzact ii concurente si n timpul rul arii uneia dintre ele sistemul cedeaza ? O programare este recuperabil a dac a pentru ecare pereche de tranzact ii Ti si Tj a.i. Tj cite ste date scrise n prealabil de Ti operat ia de commit apare nt ai la Ti si apoi la Tj . Urm atorul exemplu prezint a o programare nerecuperabil a (deoarece T8 va face roll-back si T9 are alte date): T8 read(A); write(A); read(B);
Nicolae-Cosmin V arlan Managementul tranzact iilor

T9

read(A); (T9 face commit)

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Cascadeless Schedules
T10 read(A); read(B); write(A); T11 T12

read(A); write(A); read(A) Dac a T10 nu apuc a s a fac a commit nainte ca T11 s a citeasc a pe A, n cazul n care T10 trebuie s a fac a roll-back, si T11 ,T12 vor trebui s a fac a acela si lucru. O programare este cascadeless schedule dac a pentru orice pereche Ti , Tj n care Tj cite ste date scrise de Ti , acesta (Ti ) a f acut commit nainte ca aceste date s a e citite de c atre Tj .
Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Testarea serializ arii


In proiectarea sistemleor de control concurent trebuie s a test am dac a program arile generate sunt serializabile. O metod a simpl a pentru determinarea CS (Conict Serializable) este prin construirea unui graf orientat denumit graf al precedent elor. Fiecare tranzact ie va reprezentat a printr-un nod. Avem muchie de la Ti la Tj dac a: Ti execut a write(Q) nainte ca Tj s a execute read(Q); Ti execut a read(Q) nainte ca Tj s a execute write(Q); Ti execut a write(Q) nainte ca Tj s a execute write(Q); Dac a graful nu are cicluri atunci programarea poate serializat a. Serializarea se face prin sortare topologic a.
Nicolae-Cosmin V arlan Managementul tranzact iilor

Baze de date relat ionale

Tranzact ii Tranzact ii concurente Serializare

Bibliograe
Capitolele 15, 16 din Silberschats-Korth-Sudarshan Database Sustem Concepts, Fourth Edition

Nicolae-Cosmin V arlan

Managementul tranzact iilor

S-ar putea să vă placă și