Sočasno izvajanje transakcij - Časovno označevanje
Iz E-študij, proste zakladnice študentskega znanja
Časovno označevanje je postopek za nadzor nad sočasnim izvajanjem transakcij, ki ne temelji na zaseganju, zato predstavlja manjšo dodatno obremenitev SUPB. Postopek je uporaben tudi pri porazdeljenih PB, kjer ne obstaja centraliziranega nadzora nad izvajanjem transakcij. Pri časovnem označevanju se podatki ne zasegajo, zato tudi ne more priti do mrtve zanke.
Vsebina |
Izvajanje transakcij
Pri časovnem označevanju se transakcije izvajajo tako, da je njihov zaporedniški razpored ekvivalenten takemu zaporednemu razporedu, po katerem se najprej izvede starejša transakcija in nato mlajša. Konfliktne oziroma potencialno konfliktne zahteve po branju ali ažuriranju podatkov se razrešujejo s prekinitvijo in ponovnim izvajanjem transakcije.
Protokol
Protokol obsega naslednja pravila:
- Vsaki transakciji Ti priredi SUPB časovno oznako to(Ti), ki je enaka njenemu startnemu času, in enolično označuje posamezno transakcijo
- V primeru centralizirane podatkovne baze se dve transakciji tako ne moreta pričeti ob istem času.
- Pri porazdeljenih podatkovnih bazah pa se časovna oznaka kombinira še z oznako lokalnega SUPB, kar nato skupaj omogoča enolično identifikacijo.
- Transakciji, katere izvajanje se po pravilih protokola prekine, se pri ponovnem izvajanju priredi nova časovna oznaka.
- Pri izvajanju transakcij se mora kot zaščita pred transakcijskimi nesrečami uporabljati odloženo ažuriranje. Vse spremembe, ki jih je transakcija izvedla, se v podatkovni bazi uveljavijo šele ob njenem uspešnem zaključku. Tako je preprečena možnost branja neobstoječega podatka (neobstoječega zapisa).
Protokol s peto točko zagotavlja, da starejša transakcija ne more prebrati podatka, ki ga je pred tem ažurirala mlajša transakcija.
S točko šest pa, da starejša transakcija ne more ažurirati podatka, ki ga je pred tem prebrala ali ažurirala mlajša transakcija.
Transakcija TX se lahko ob nekem branju ali ažuriranju nadaljuje le, če je bilo zadnje ažuriranje (ali branje) tega podatka s strani starejše transakcije TY.
Če transakciji podatek le bereta, je zaporedje branj nepomembno.
Transakcije se ob uporabi časovnega označevanja praviloma prekinjajo pogosteje, kot bi bilo potrebno oz. bi bilo ob uporabi prej obravnavanih protokolov.
Ob konfliktni situaciji se vedno prekine delovanje starejše transakcije.
Daljše transakcije postanejo pogosto prekinjene zaradi ažuriranja, ki ga izvedejo mlajše. Protokol daje implicitno prednost krajšim transakcijam pred daljšimi
Časovne oznake
Vsakemu podatku P oz. objektu zaseganja P, priredi SUPB dve časovni oznaki:
- tp(P)
- je enak časovni oznaki to(Ti) najmlajše transakcije doslej, ki je podatek P uspešno prebrala;
- ta(P)
- je enak časovni oznaki to(Ti) najmlajše transakcije doslej, ki je podatek P uspešno ažurirala.
Branje
Ob zahtevi transakcije Ti po branju podatka P:
- če je to(Ti) < ta(P), se Ti razveljavi in vrne v ponovno izvajanje;
- v nasprotnem primeru se branje izvede, časovna oznaka povezana z branjem podatka P pa se spremeni v: tp(P) = max(tp(P), to(Ti)).
Ažuriranje
Ob zahtevi transakcije Ti po ažuriranju podatka P:
- če je to(Ti) < tp(P) ali to(Ti) < ta(P), se Ti razveljavi in vrne v ponovno izvajanje;
- v nasprotnem primeru se ažuriranje izvede, časovna oznaka povezana z ažuriranjem podatka P, pa se spremeni v: ta(P) = to(Ti).