Sočasno izvajanje transakcij - Preprečevanje nastopa mrtve zanke
Iz E-študij, proste zakladnice študentskega znanja
Nastop mrtve zanke pri sočasnem izvajanju transakcij lahko rešimo na več načinov:
- z urnikom izvajanja transakcij
- z vnaprejšnjo zahtevo po zaseženju podatkov
- z ureditvijo objektov zaseganja
- o tem odloča transakcijski program
- s prekinitvijo in ponovnim izvajanjem transakcij
Vsebina |
Urnik izvajanja transakcij
- Z izvajanjem transakcij po urniku ne dopustimo sočasnega izvajanja takih transakcij oziroma transakcijskih programov, ki bi utegnili imeti konfliktne podatkovne zahteve
- V tem primeru tudi ni potrebno izvajati zaseganja podatkov. Pravimo, da se na ta način poveča "propustnost" podatkovne baze
- Ker praviloma ni vnaprej znano katere podatke bo transakcija ažurirala, se možna sočasnost (prepletajoči način) izvajanja transakcij zelo omeji
- V najneugodnejšem primeru je urnik transakcij ekvivalenten zaseženju celotne podatkovne baze s strani posamezne transakcije
Vnaprejšnja zahteva po zaseženju podatkov
Transakcija postavi pred svojim prvim ažuriranjem zahtevo po zaseženjih vseh podatkov, ki jih namerava ažurirati:- Če je možno vsa zahtevana zaseženja takoj odobriti, jih tudi SUPB odobri in transakcija se lahko nemoteno izvaja vse do svojega zaključka.
- Če kakšnega izmed zaseženj ni možno odobriti, se ji ne odobri nobenega zaseženja in transakcija preide v stanje čakanja.
Pri taki rešitvi ne sme biti izbor podatka, ki ga bo transakcija ažurirala, pogojen z uspehom ali neuspehom kakšnega predhodnega ažuriranja, zato ker v takem primeru transakcija:
- bodisi ne more vedeti, katere podatke naj zaseže
- bodisi zaseže preventivno bistveno večje število podatkov, kot bi bilo potrebno, zato se zmanjšuje možnost sočasnega izvajanja drugih transakcij
Ureditev objektov zaseganja
- Objekte zaseganja, ki so lahko zapisi, strani zapisov, n-terice, tabele, se sme zaseči samo po določenem vrstnem redu, ki mora biti znan vnaprej vsem transakcijskim programom
- Če je objektov zaseganja veliko (npr. zapisi), je določanje njihovega vrstnega reda in tudi nadzor nad pravilnim vrstnim redom zaseganja dokaj zamudno opravilo
- potrebno je vnaprej poznati podatke, ki se bodo v okviru transakcije ažurirali
Odloča transakcijski program
- Če zahteva po odobritvi zaseženja podatka v okviru transakcije ni takoj odobrena, odloči transakcijski program, kako naprej:
- izvajanje transakcije lahko program takoj prekine in ko jo SUPB razveljavi, prične z njenim ponovnim izvajanjem; lahko pa jo uvrsti na začetek čakalne vrste in prične izvajati transakcijo, ki je naslednja na vrsti;
- v presledkih lahko izvede nekaj poskusov zaseganja podatka in če ne uspe, prekine izvajanje transakcije.
Prekinitev in ponovno izvajanje transakcij
- Uporaba protokolov:
- Čakaj ali izdihni (Wait Die)
- Rani ali čakaj (Wound-Wait)
Vsaki izmed transakcij pripiše SUPB ob njenem pričetku časovno oznako - njen startni čas. Na ta način je za poljubni dve transakciji možno ugotoviti, katera je "starejša" in katera "mlajša"
Starejša transakcija je tista, ki se že dlje časa izvaja in je zato njen startni čas manjši
Čakaj ali izdihni
Ko transakcija TA zahteva zaseženje podatka, ki je že zasežen s strani transakcije TB, in se njeni zahtevi zaradi nekompatibilnosti zaseženj ne da takoj ugoditi, se po protokolu “Čakaj ali izdihni” izvede naslednje:
- če je transakcija TA starejša od TB, preide TA v stanje čakanja na odobritev,
- če je mlajša, pa se njeno izvajanje prekine, transakcija se razveljavi in posreduje transakcijskemu programu v ponovno izvajanje
Rani ali čakaj
Ko transakcija TA zahteva zaseženje podatka, ki ga je že zasežen s strani transakcije TB, in se njeni zahtevi zaradi nekompatibilnosti zaseženj ne da takoj ugoditi, se po protokolu “Rani ali čakaj” izvede naslednje:
- če je transakcija TA starejša od TB, se prekine transakcija TB, razveljavi in vrne v ponovno izvajanje. Po razveljavitvi TB se transakciji TA odobri zaseženje podatka
- če je TA mlajša, pa preide v stanje čakanja