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 Read B Read A Read C Write B Write A 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 WT=200 WT=200 RT=150 RT=175 T2 150 T3 175 A RT=0 WT=0 B RT=0 WT=0 RT=200 C RT=0 WT=0

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