Documente Academic
Documente Profesional
Documente Cultură
Nicolae-Cosmin V arlan
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
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
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
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 :
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 :
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
Nicolae-Cosmin V arlan
Nicolae-Cosmin V arlan
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 :
Nicolae-Cosmin V arlan
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
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
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
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
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
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
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
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);
Nicolae-Cosmin V arlan
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
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
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
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
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);
Nicolae-Cosmin V arlan
T2
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
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
Nicolae-Cosmin V arlan
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
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
Bibliograe
Capitolele 15, 16 din Silberschats-Korth-Sudarshan Database Sustem Concepts, Fourth Edition
Nicolae-Cosmin V arlan