«« ( Date ) »» // «« ( Thread ) »» // nastava - 2003

Re: Baze - TS algoritam

by Damjan S. Vujnovic
četvrtak, 27. februar 2003 - 18:28.

Ovo pise kod mene u knjizi "Database systems: Complete Book". TS(T) je za transakcije, TS(X) je za podatak X. C(X) je commit flag za podatak X. To znaci (cini mi se) da je transakcija koja je poslednja pisala C(X) zavrsila, tj. uradila je commit.

Skedzuler ima 3 opcije za svaki zahtev:
- dozvoljava zahtev
- vrsi rollback transakcije i dodeljuje joj novi TS
- odlaze izvrsavanje zahteva i kasnije donosi odluku da li da dozvoli zahtev ili da uradi rollback

...

Molim vas da mi ukazete na razlike u odnosu na algoritam iz skripte, posto ga nemam.


Samo da uđe u zapisnik da je si ti prvi počeo i da ovo za ispit nije potrebno... Dakle, timestamp protokol koji si izdeklamovao, a ja ga zamenio tačkicama (u daljem tekstu protokol A) je "vrhunac" timestamp protokola. Protokol koji se uči na našem kursu (protokol B) je takav da su kaskadni rollbackovi (pojava da kada se uradi rollback neke transakcije, mora uraditi i rollback svih transakcija koje su posle nje u ekvivalentnom serijskom redosledu izvršavanja, tj. transakcija sa većom vremenskom markom) mogući što je i njegova najveća mana (ili prednost, ako to gledaš sa aspekta maltretiranja studenata). Ako transakcije poštuju protokol A, to se nikada ne dešava zato što transakcije nikada ne čitaju "uncommited values", nego svaki podatak ima svoj commit flag i transakcija čeka dok vrednost ne postane potvrđena, baš onako kako si i rekao (zato uostalom i jesu uvedeni commit flags sa svaki podatak i ona čekanja). To što nema kaskadnih rollbackova plaćaš manjom konkurentnošću izvršavanja jer neki redosledi izvršavanja koji poštuju protokol B ne poštuju protokol A. Naravno, svi redosledi izvršavanja koji poštuju protokol A poštuju i protokol B.

Pozdrav,
Damjan S. Vujnović