Sunteți pe pagina 1din 4

Controlul concurenei pe baza ordonrii tampilelor de tranzacii

Folosirea mecanismelor elementare de nchidere, combinat cu protocolul de nchidere n dou faze


(2PL) permite garantarea serializabilitii execuiilor de tranzacii. Ordinea tranzaciilor n
planificarea serial echivalent este bazat pe ordinea n care tranzaciile prelucrate nchid obiectele
de date la care trebuie s aib acces. Ne amintim c n acest context, dac o tranzacie solicit
dreptul de a nchide un obiect de date care este deja nchis, ea poate fi forat s atepte pn cnd
accesul la obiect este eliberat.
O abordare diferit, care garanteaz de asemenea serializabilitatea, asociaz cu tranzaciile
tampile de timp, n scopul ordonrii acestora astfel mct s fie obinut o execuie echivalent
cu una serial.
tampila de timp este un identificator unic, creat de sistemul de gestiune a bazei de date, pentru a
identifica o tranzacie. Vom nota cu TS( T) tampila de timp a tranzaciei T ( TS provine de la
originalul time stamp). De obicei, tampilele de timp sunt allocate n ordinea n vcare tranzaciile
sosesc n sistemul bazei de date, ceea ce nseamn c o tampil de timp ar putea fi asimilat cu
momentul de intrare n lucru a unei tranzacii. Tehnicile de control al concurenei bazate pe tampile
de timp nu folosesc nchideri, prin urmare nu pot s apar blocri.
Dintre metodele de generare a tampilelor de timp menionm:
-

folosirea unui numrtor, incrementat valoarea sa este alocat unei tranzacii. n aceast
variant, tranzaciile sunt enumerate n secvena 1, 2, 3, etc. Dac pentru un interval scurt de
timp nu sunt executate tranzacii, coninutul numrtorului devine zero.

Folosirea valorii curente a semnalului de tact al sistemului de calcul. n acest caz, generarea
a dou tampile de timp n decursul aceluiai interval de tact trebuie evitat.

Un algoritm pentru ordonarea tampilelor de timp


Ideea ce st la baza algoritmului decurge din considerentele prezentate: tranzaciile vor fi ordonate
cu ajutorul tampilelor de timp.Planificarea din care fac parte tranzaciile va fi serializabil, iar n
execuia serial echivalent tranzaciile vor fi dispuse n ordinea valorilor tampilelor de timp.
Denumim aceast abordare ordonare de tip tampil de timp, prescurtat (TO). S subliniem
deosebirea fa de nchiderea n dou faze: n aceasta, o planificare este serializabil dac este
echivalent cu o execuie serial oarecare permis de protocolul 2PL. n ordonarea cu tampile de
timp, planificarea este echivalent cu o execuie serial particular, care corespunde ordinei
tampilelor de timp ale tranzaciilor.
1

n fapt, algoritmul trebuie s asigure condiiile n care pentru fiecare obiect de date la care n
planificare au acces mai multe tranzacii, ordinea n care se realizeaz accesul nu ncalc
serializabilitatea planificrii. n vederea atingerii acestui obiectiv, algoritmul TO principal asociaz
cu fiecare obiect X al bazei de date dou valori de tampil de timp:
1. read_TS (X), care este tampila de timp pentru citire a obiectului de date X. Se definete ca
fiind cea mai mare tampil de timp dintre toate valorile associate cu tranzaciile care au
reuit s citeasc X cu succes.
2. write_TS (X)- este tampila de timp pentru nregistrarea obiectului X. Se definete ca fiind
cea mai mare tampil de timp dintre toate valorile de tampil associate cu tranzaciile ce
au nregistrat obiectul X cu succes.
S analizm evenimentele care se produc n decursul evoluiei algoritmului. Oricnd o tranzacie
oarecare T ncearc s iniieze o operaiune de citire pe X, Read X, sau o operaiune de nregistrare
Write X, algoritmul TO principal compar tampila de timp a tranzaciei T cu valorile tampilei de
timp pentru citire sau nregistrare ale obiectului X, pentru a verifica dac nu este cumva nclcat
ordinea tampilelor de timp ale planificrii tranzaciilor. Dac operaiunea iniiat ncalc ordinea,
tranzacia T nu respect ordonarea planificrii seriale echivalente i, ca urmare, T va fi abandonat.
n continuare, tranzacia T este din nou prezentat sistemului de gestiune a bazei de date, ca o
tranzacie nou, cu o tampil de timp de valoare nou.. n ipoteza c tranzacia T a fost abandonat
i apoi reintrodus n sistem, orice alt tranzacie T1 care eventual a folosit o valoare nregistrat de
ctre T trebuie s fie, de asemenea, reintrodus n sistem. Similar, orice tranzacie T2 care a folosit,
eventual, o valoare nregistrat de T1, trebuie reintrodus, .a.m.d. Procesul descries poart numele
de reintroducere n cascad i constitue una dintre dificultile associate cu algoritmul TO
principal, deoarece execuiile produse nu pot fi recuperate.
Respectarea ordonrii tranzaciilor dup valorile tampilelor de timp trebuie verificat de algoritmul
de control al concurenei n urmtoarele dou cazuri:
1. O tranzacie T, a crei tampil de timp are valoarea TS (T), iniiaz o operaie
Write X. Distingem situaiile prezentate mai jos:
a. Dac read_TS (X) > TS (T), sau write_TS(X) > TS(T), atunci T este abandonat,
rentoars, iar operaia iniiat respins. Aceast evoluie are loc deoarece o
tranzacie cu tampila de timp superioar fa de TS (T)- i, prin urmare, amplasat
n urma tranzaciei T n ordonarea tamplielor de timp- a reuit deja s citeasc sau
s nregistreze valoarea obiectului X nainte ca tranzacia T s nregistreze acest
obiect, nclcnd astfel ordinea tampilelor de timp.
2

b. Dac nu este ndeplinit condiia specificat la punctual a de mai sus, operaia


Write X este executat, iar write_TS (X) ia valoarea TS (T).
2. Tranzacia T iniiaz o operaie Read X. n aceast situaie distingem posibilitile
descrise n continuare.
a. Dac write_TS (X) > TS(T), atunci tranzacia T este abandonat,
rentoars, iar operaia de citire este respins. Evoluia descris se
produce deoarece o tranzacie oarecare cu tampila de timp mai mare
dect TS (T)- amplasat n urma tranazaciei T n ordonarea tampilelor de
timp- a reuit deja s nregistreze valoarea obiectului de date X, nainte ca
tranzacia T s fi citit X.
b. Dac write_TS (X) TS (T), atunci operaiunea Read X din tranzacia T
este executat, iar valoarea read_TS (X) devine egal cu cea mai mare
dintre valorile TS (T) sau read_TS (X) curent.
Rezult aadar, c algoritmul TO principal verific apariia ntr-o ordine incorect a dou operaiuni
conflictuale i o respinge pe ultima dintre acestea, abandonnd tranzacia care a iniiat-o. Prin
urmare, execuia produs de algoritmul TO principal este cu siguran serializabil la conflict.
Exemplu: Fie o planificare a tranzaciilor T1, T2, T3, care au acces la obiectele A, B, C ale unei
baze de date. n figura care urmeaz, sunt indicate tampilele de timp ale tranzaciilor i duratele de
citire i nregistrare ale obiectelor de date A, B, C.
T1
200

T2
150

T3
175

A
RT=0
WT=0

Read B
Read A

B
RT=0
WT=0
RT=200

RT=150
Read C

Write B
Write A

C
RT=0
WT=0
RT=175

WT=200
WT=200
Write C
Abort
Write A__________________________________

Dup cum se vede, la nceput presupunem c la nceput fiecare din obiectele de date are att timpul
de citire, ct i timpul de nregistrare de valoare 0. tampilele de timp ale tranzaciilor sunt obinute
atunci cnd acestea notific planificatorul c ncep s lucreze, deci s fie executate. Observm c
tranzacia T1 execut primul acces la date, dei nu are cea mai mic valoare a tampilei de timp. De
3

fapt, tranzacia T2 era prima care ar fi trebuit s notifice planificatorul c ncepe execuia, urmt de
T3, iar T1 ar fi trebuit s fie ultima tranzacie ce ncepe execuia.
n decursul primului pas al planificrii propuse, prima aciune realizeaz citirea obiectului B de
ctre tranzacia T1. Deoarece timpul de nregistrare pentru B este mai mic dect
tampila de timp a tranzaciei T1, operaiunea de citire este fizic realizabil i acestei tranzacii i se
permmite nceperea execuiei. Timpului de citire al obiectului B i se atribue valoarea 200, care este
tampila de timp a tranzaciei T1. n mod asemntor, a doua i a treia aciune de citire sunt legale,
astfel nct timpul de citire al fiecrui obiect de date ia valoarea tampilei de timp a tranzaciei care
efectueaz citirea.
n al patrulea pas al planificrii, T1 nregisteaz B. Deoarece timpul de citire a obiectului de date B
nu este mai mare dect tampila de timp a tranzaciei T1, nregistrarea este fizic realizabil.
Totodat, ntruct timpul de nregistrare a obiectului B nu este mai mare dect tampila de timp a
tranzaciei T1, trebuie s fie realizat efectiv operaia de nregistrare. Odat cu efectuarea acesteia,
timpul de nregistrare a obiectului B ia valoarea 200, adic valoarea tampilei de timp a tranzaciei
T1, care face nregistrarea.
n pasul al cincilea, procesul evolueaz n manier asemntoare, cu operaia de nregistrare a
obiectului A de ctre T1 i cu atribuirea valorii tampilei de timp a tranzaciei T1 ctre timpul de
nregistrare a obiectului A.
n decursul urmtorului pas, al aselea, tranzacia T2 ncearc s nregistreze obiectul de date C.
Remarcm ns c c C a fost citit anterior de ctre T3, tranzacie ce a fost executat teoretic la
momentul 175 (valoarea tamplei sale de timp), pe cnd T2 ar ncerca s nregistreze C la momentul
150, care este valoarea tampilei de timp a acestei tranzacii. Aciunea ncercat de T2 conduce la
un comportament imposibil din punct de vedere fizic, aadar aceast tranzacie trebuie re- ntoars
(rolled back), fiind n final abandonat.
Ultimul pas al planificrii este reprezentat de nregistrarea obiectului de date A de ctre T3.
Deoarece timpul de citire a obiectului A are valoarea 150, mai mic dect tampila de timp a
tranzaciei T3, de valoare 175, nregistrarea este legal. Observm ns c n obiectul A a fost
nregistrat valoarea 200 de ctre tranzacia T1-fapt petrecut teoretic la momentul 200, care este
valoarea tampilei de timp a tranzaciei T1. n consecin, tranzacia T3 nu va fi returnat, dar nici
nu va nregistra informaie n obiectul A.

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