Sunteți pe pagina 1din 8

Conspect la MySQL 20

Tranzacii i paralelism
V-om analiza posibilitile executrii tranzaciilor n paralel de ctre mai muli utilizatori
- izolarea tranzaciilor!
S"#$ sunt sisteme multiutilizatori adic permit n paralel lucrul a mai multor utilizatori!
%rebuie de inut cont c utilizatorii nu trebuie s ncurce unul altuia! &iindc o unitate
lo'ic pentru utilizator este tranzacia lucrul S"#$ trebuie or'anizat n a(a )el ca
utilizatorul s nu obser*e c tranzaciile lor se ndeplinesc odat cu altele!!
Cea mai simpl metod este de a crea o coad din tranzaciile utilizatorilor (i de a le
executa n ordinea aprut! +ceast metod nu este con*enabil )iindc se pierde
principiul lucrului n paralel! ,ezult c tranzaciile trebuiesc executate odat dar a(a ca
rezultatele s )ie a(a - cum ar )i ndeplinite n r.nd! Complicat poate )i )aptul c dac nu
se iau care*a msuri atunci datele modi)icate de un utilizator pot )i modi)icate de
tranzacia altui utilizator mai de*reme ca s )ie )inisat tranzacia primului utilizator! /na
din metod este de a )olosi blocrile!
0a'ina 1 din 2
Conspect la MySQL 20
Tranzacii n combinaii
+tomicitatea tranzacie presupune c trebuie s )ie executat complet sau s nu )ie
executat deloc! S"#$ 'aranteaz utilizatorului ndeplinirea urmtoarelor dou condiii3
1! trebuie s )ie executat complet sau s nu )ie executat deloc4
2! 5n timpul executrii aceste i operaii nu se execut alte operaii al altor tranzacii!
6peraiile elementare a di)eritor tranzacii pot )i executate n orice ordine 7e*ident n
interiorul )iecrei tranzacii operaiile elementare sunt executate n ordinea indicat8!
$e exemplu dac sunt ni(te tranzacii ce constau dintr-o serie de instruciuni elementare3

seria creat de S"#$ pentru a executa aceste tranzacii poate )i de exemplu3
!
Definiie 1! 6 serie din mai multe tranzacii instruciunile elementare a crora se
intercaleaz se nume(te combinaie de tranzacii.
Definiie 2! Seria n care se execut instruciunile elementare a tranzaciilor se nume(te
graficul de execuie a tranzaciilor!
9ot! :*ident c pentru care*a tranzacii pot exista mai multe 'ra)ice de execuie
di)erite!
$eterminarea izolrii utilizatorilor se reduce la ale'erea 'ra)icului de execuie a
tranzaciilor! %ot odat 'ra)icul de execuie trebuie s )ie optimal de exemplu s dea
timp minim pentru executarea tranzaciilor )iecrui utilizator! V-om analiza termenul
'ra)ic de execuie ;corect;
(i unele remarci despre optimalitate!
0a'ina 2 din 2
Conspect la MySQL 20
Problemele executrii paralele a tranzaciilor.
Cum pot tranzaciile unor utilizatori s ncurce la ali utilizatori< Se discut despre trei
probleme de baz a paralelismului3
Problema pierderii rezultatelor modificrii!
Problema dependenei nefixate 7citirea datelor =murdare; citirea incorect8!
Problema analizei incompatibile!
S analizm aceste situaii!
&ie dou tranzacii + (i # sunt executate con)orm crui*a 'ra)ic! &ie c tranzaciile
lucreaz cu care*a obiecte a #$ de exemplu cu r.ndurile tbliei! >nstruciunea de citire a
r.ndurilor *-om nota-o unde - *aloarea citit! >nstruciunea de scriere a
*alorii n r.ndul *-om nota-o !
Problema pierderii rezultatelor modificrii
$ou tranzacii pe r.nd nscriu care*a date n acela(i r.nd (i )ixeaz modi)icri!
Tranzacia A Timpul Tranzacia B
$e citire
---
---
$e citire
Scriere
---
---
Scriere
&ixarea tranzaciei ---
--- &ixarea tranzaciei
Pierderea rezultatelor modificrii
,ezultat! La )inisarea ambelor tranzacii r.ndul conine *aloarea introdus de
tranzacia mai t.rzie #! %ranzacia + nu (tie nimic despre existena tranzaciei # (i
e*ident a(teapt ca r.ndul conine *aloarea ! +st)el tranzacia + a pierdut
rezultatele lucrului e)ectuat!
0a'ina ? din 2
Conspect la MySQL 20
Problema dependenei nefixate 7citirea datelor =murdare; citirea incorect8!
%ranzacia # modi)ic date n r.nd! $up aceasta tranzacia + cite(te datele modi)icate (i
lucreaz cu ele! %ranzacia # re)uz (i repune datele *ec@i!
Tranzacia A Timpul Tranzacia B
---
$e citire
---
Scriere
$e citire
---
Lucrul cu datele citite
---
---
,e)uzarea tranzaciei
&ixarea tranzacii ---
Lucrul cu datele murdare
Cu ce a lucrat tranzacia +<
,ezultat! %ranzacia + n lucrul su a )olosit date care nu sunt n #$ (i nu au )ost!
5ntrade*r dup re)uzarea tranzaciei # trebuie s se restabileasc situaia cum dac
tranzacia # n 'enere nicicnd nu s-a executat! +(a dar rezultatele lucrului tranzaciile
+ sunt incorecte )iindc ea a lucrat cu datele ce nu sunt n #$!
Problema analizei incompatibile
+ceast problem include mai multe *ariante3
Necitirea repetat!
Elemente fictive 7)antom8!
Analiza incompatibil!
Necitirea repetat. %ranzacia + de dou ori cite(te acela(i r.nd! 5ntre aceste citiri s-a
inserat tranzacia # care modi)ic *alori n acest r.nd!
Tranzacia A Timpul Tranzacia B
$e citire
---
---
$e citire
---
Scriere
--- &ixarea tranzacii
Citirea repetat
---
&ixarea tranzacii ---
Necitirea repetat
%ranzacia + nu (tie nimic despre existena tranzaciile # (i )iindc sin'ur nu modi)ic
*aloarea n r.nd a(teapt ca la citirea repetat *aloarea s )ie aceea(i!
0a'ina A din 2
Conspect la MySQL 20
,ezultat! %ranzacia + lucreaz cu date care din punct de *edere a tranzaciei + se
modi)ic de sinestttor!
Elemente fictive fantom!
:)ectul elementelor )icti*e di)er de tranzaciile anterioare prin )aptul c la un pas se
execut multe instruciuni - de citire odat a mai multor r.nduri ce satis)ac care*a
condiie!
%ranzacia + de dou ori selecteaz r.ndurile cu aceea(i condiie! 5ntre selectri s-a
inserat tranzacia # care adau' un r.nd nou ce satis)ace condiiei de selectare!
Tranzacia A Timpul Tranzacia B
Selectarea r.ndurilor ce satis)ac condiia !
7S-au selectat n r.nduri8
---
---
>nserarea r.ndului nou ce satis)ace condiia !
--- &ixarea tranzacii
Selectarea r.ndurilor ce satis)ac condiia !
7S-au selectat nB1 r.nduri8
---
&ixarea tranzacii ---
Au aprut r"nduri# care mai de$reme nu erau
%ranzacia + nu (tie nimic despre existena tranzaciile # (i )iindc sin'ur nu modi)ic
*aloarea n r.nd a(teapt ca la a doua selectare s )ie 'site acelea(i r.nduri!
,ezultat! %ranzacia + n dou selectri e'ale a obinut di)erite rezultate!
Analiza incompatibil. :)ectul analizei incompatibile se deosebe(te de celelalte exemple
prin )aptul c n combinaie exist dou tranzacii - una mare alta mic!
%ranzacia mare execut care*a analiz pentru tot tabelul de exemplu calculeaz suma
total a banilor din conturile clienilor bncii pentru contabilul (e)! &ie c pe toate
conturile sunt acelea(i sume de exemplu c.te C100! %ranzacia mic n acest moment
execut trans)erul a CD0 de pe un cont la altul ast)el c suma total pe conturi nu se
modi)ic!
Tranzacia A Timpul Tranzacia B
$e citire contul (i sumare!
---
---
:xtra'erea banilor din contul !
---
+du'area banilor la contul !
--- &ixarea tranzacii
$e citire contul (i sumare!
---
0a'ina D din 2
Conspect la MySQL 20
$e citire contul (i sumare!
---
&ixarea tranzacii ---
%uma &'() pe toate conturile nu este corect * trebuie s fie &+))
,ezultat! C@iar dac tranzacia # a executat tot corect - banii au )ost trans)erai )r
pierderi dar n rezultatul execuiei tranzaciei + a calculat suma incorect!
&iindc tranzaciile de trans)erare se execut de obicei des rezult c contabilul (e)
nicicnd nu *a (ti c.i bani sunt n banc!
,onflicte ntre tranzacii
+m obser*at c analiza problemei paralelismului ne arat c dac nu sunt primite
msuri speciale atunci n timpul lucrului n combinaii se pierde cerina 7>8 a tranzaciei -
izolarea! %ranzaciile real ncurc una alteia de a primi rezultate corecte!
9u toate tranzaciile ns ncurc una alteia! :*ident c tranzaciile nu ncurc dac ele
se adreseaz la date di)erite sau se execut n timp di)erit!
Definiie 3! %ranzaciile se numesc concurente dac ele se intersecteaz n timp (i se
adreseaz la acelea(i date!
5n rezultatul concurenei cu datele ntre tranzacii apar conflicte de acces la date! Se
deosebesc urmtoarele )orme de con)licte 3
W-W (criere - criere !! 0rima tranzacie a modi)icat obiectul (i nu s-a )inisat! +
doua tranzacie modi)ic acest obiect! ,ezultatul - pierderea modi)icrilor!
"-W (#e citire - criere !! 0rima tranzacie a citit obiectul (i nu s-a )inisat! +
doua tranzacie e)ectueaz modi)icarea acestui obiect! ,ezultatul - analiz incompatibil
7necitire repetat8!
W-" (criere - $itire!! 0rima tranzacie a modi)icat obiectul (i nu s-a )inisat! +
doua tranzacie ncearc s citeasc acest obiect! ,ezultatul - de citire a datelor
=murdare;!
Con)lictele de tipul ,-, 7$e citire - Citire8 lipsesc )iindc datele la citire nu se modi)ic!
Celelalte probleme a paralelismului sunt mai complicate )iindc di)erena principial a
lor este c ele nu pot aprea n timpul lucrului cu un obiect! 0entru apariia acestor
con)licte e necesar ca tranzaciile s lucreze cu mai multe date!
Definiie 4! "ra)icul de execuie a setului de tranzacii se nume(te %n serie& dac
tranzaciile se execut strict una dup alta!
Definiie 5! $ou 'ra)ice se numesc ec'ivalente dac la executarea lor se obine acela(i
rezultat indi)erent de starea iniial a #$!
Definiie 6! "ra)icul de execuie a tranzaciilor se nume(te corect dac este ec@i*alent cu
care*a 'ra)ic n serie!
9ot! La executarea a dou 'ra)ice n serie 7rezult - corecte8 ce conine acelea(i
tranzacii pot )i obinute diferite rezultate! 5ntrade*r )ie tranzacia + are instruciunile
E$e adunat F cu 1; dar tranzacia # - Ede dublat F;! "ra)icul n serie G+ #H *-a returna
rezultatul 27FB18 dar 'ra)icul n serie G# +H *-a returna rezultatul 2FB1! ,ezult c pot
exista mai multe 'ra)ice de executare a tranzaciilor ce obin di)erite rezultate cu aceea(i
situaie iniial a #$!
0roblema determinrii lucrului izolat al utilizatorilor nu se reduce numai la determinarea
'ra)icelor corecte n serie de execuie a tranzaciilor! $ac aceasta ar )i )ost su)icient
0a'ina I din 2
Conspect la MySQL 20
atunci cea mai simpl soluie era serializarea - aranJarea tranzaciilor n r.nd comun
dup timpul apariiei a lor (i executarea lor strict n ordinea apariiei! 0roblema este n
)aptul c acest 'ra)ic nu *a )i cel optimal din punct de *edere a e)icienei sistemei!
Mai analizm un exemplu - dorim s obinem un 'ra)ic optim de executare a
tranzaciilor! S de)inim noiunea de optimal!
&iecrui 'ra)ic posibil de execuie a tranzaciilor i asociem *aloarea crei*a )uncii de
pre! 5n calitate de )uncie de pre putem considera de exemplu timpul sumar de
executare a tuturor tranzaciilor din set! %impul executrii unei tranzacii se calculeaz de
la momentul c.nd tranzacia a aprut (i p.n c.nd tranzacia e executat ultima
instruciune elementar a sa! +cest timp const din urmtoarele componente3
1! %impul de a(teptare a nceputului tranzaciei - timpul care trece din momentul
c.nd tranzacia a aprut (i c.nd a nceput executarea real a primei instruciuni
elementare!
2! Suma timpurilor de executare a operaiilor elementare a tranzaciei!
?! Suma timpurilor de executare a operaiilor elementare a altor tranzacii inserate
ntre operaiile elementare a tranzaciei!
6ptim *a )i 'ra)icul care *a returna minimumul )unciei de pre!
V-om analiza urmtoarea situaie3 &ie c cunoa(tem care tranzacii n care perioade de
timp apar adic cunoa(tem *iitoarea combinaie a tranzaciilor i momentele apariiei
fiecrei dintre tranzacii 3
%ranzacia apare n momentul !
%ranzacia apare n momentul !
K
%ranzacia apare n momentul !
5n acest caz )iindc setul tuturor tranzaciilor este cunoscut din timp teoretic putem
analiza toate *ariantele posibile a 'ra)icelor de execuie (i de selectat din ele acele
'ra)ice care n primul r.nd sunt corecte (i n al doilea r.nd sunt optimale! 5n acest caz
'ra)icul optim de execuie a tranzaciilor este 'sit!
5n situaie real ns nu se cunosc nu numai care tranzacii *or apare (i n ce timp dar nu
se cunoa(te nici timpul de execuie a tranzaciilor!
,eal sistemul poate )unciona )r pauz mai multe zile sau c@iar luni (i n acest
caz setul de tranzacii *a )i setul tuturor tranzaciilor din aceast perioad! 0e de alt parte
ser*erul poate s se deconecteze prin comanda administratorului sau n rezultatul crui*a
caz excepional! : necesar ca sistemul s )uncioneze a(a ca n orice timp setul
tranzaciilor ce se execut s )ie corect (i aproape de cel optimal!!
&iindc tranzaciile nu ncurc una alteia dac se adreseaz la date di)erite sau se execut
n timp di)erit exist dou metode de rezol*are a concurenei ntre tranzacii3
1! =$e a stopa; unele tranzacii pentru at.t timp ca combinaia de tranzacii n
)iecare moment de timp s )ie corect 7adic tranzaciile concurente se execut n
timp di)erit8!
2! $e a o)eri tranzaciilor concurente =di)erite; exemplare de date 7adic tranzaciile
concurente s lucreze cu di)erite *ersiuni de date8!
0rima metod =Stoparea; tranzaciilor - se realizeaz prin )olosirea blocrilor sau prin
metoda etic@etelor temporale!
0a'ina L din 2
Conspect la MySQL 20
+ doua metod - o)erirea tranzaciilor concurente =di)erite; exemplare de date - se
realizeaz prin )olosirea datelor din Jurnalul tranzaciilor!
-ntrebri.
,ombinaii de tranzacii
Definiie 2! Seria n care se execut instruciunile elementare a tranzaciilor se nume(te
graficul de execuie a tranzaciilor!
Problema pierderii rezultatelor modificrii!
Problema dependenei nefixate 7citirea datelor =murdare; citirea incorect8!
Problema analizei incompatibile!
Problema analizei incompatibile
+ceast problem include mai multe *ariante3
Necitirea repetat!
Elemente fictive 7)antom8!
Analiza incompatibil!
Definiie 3! %ranzaciile se numesc concurente dac ele se intersecteaz n timp (i se
adreseaz la acelea(i date!
Definiie 4! "ra)icul de execuie a setului de tranzacii se nume(te %n serie& dac
tranzaciile se execut strict una dup alta!
Definiie 5! $ou 'ra)ice se numesc ec'ivalente dac la executarea lor se obine acela(i
rezultat indi)erent de starea iniial a #$!
Definiie 6! "ra)icul de execuie a tranzaciilor se nume(te corect dac este ec@i*alent cu
care*a 'ra)ic n serie!
0a'ina 2 din 2

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