Sočasno izvajanje transakcij
Iz E-študij, proste zakladnice študentskega znanja
Z vidika nadzora nad sočasnim izvajanjem transakcij so pomembni predvsem tisti ukazi, ki spreminjajo vsebino PB.
Omejili se bomo na naslednje ukaze:
- Pomni,
- Pozabi,
- PoiščiPreberi(X, x),
- Ažuriraj(X, x) (Ta ukaz zamenjuje oz. pokriva ukaze: Dodaj(X, x), Spremeni(X, x), Izbriši(X)).
Vsebina |
Razpored
Zaporedje izvajanja ukazov v okviru (več) transakcij se imenuje razpored (schedule)
Zaporedni razpored
Pri sočasnem izvajanju transakcij se najprej izvedejo vsi ukazi ene transakcije, nato pa vsi ukazi druge transakcije
Primer
Zamislimo si banko, ki vodi račune svojih komitentov. Komitenti med seboj kupčujejo, zato je potrebno pri vsaki kupčiji izvesti transakcijo - prenos sredstev z računa enega komitenta na račun drugega komitenta. Po izvedbi ene ali večih transakcij mora vsota sredstev na vseh računih skupaj ostati nespremenjena.
Omejimo se na dve transakciji T0 in T1. Izvedeta se lahko po dveh različnih zaporednih razporedih, in po celi vrsti izmeničnih razporedov. Pri tem se lahko posamezna transakcija zaključi uspešno (z ukazom Pomni) ali pa neuspešno (z ukazom Pozabi), pri čemer pa se vsa njena že izvedena ažuriranja v podatkovni bazi razveljavijo. Predpostavili bomo tudi, da se ažuriranja izvajajo kot sprotna ažuriranja.
|
|
- Ukaz transakcije T1 - PoiščiPreberi(R3,d) se ni uspešno izvršil
- Transakcijski program je izdal ukaz Pozabi, SUPB pa je nato transakcijo T1 razveljavil in s tem obnovil podatek R2 v prvotno stanje
- Stanje v podatkovni bazi po izvedenih transakcijah je R1 = 90, R2 = 210 in R3 = 300. Merilo uspešnosti je ohranjanje vsote 600
- Razpored je zaporeden
| T0 | T1 |
|---|---|
| PoiščiPreberi(R2,c)
c := c - 20 Ažuriraj(R2,c) PoiščiPreberi(R3,d) Pozabi | |
| PoiščiPreberi(R1,a)
a := a - 10 Ažuriraj(R1,a) PoiščiPreberi(R2,b) b := b + 10 Ažuriraj(R2,b) Pomni |
Prepletajoč razpored
Med ukazi ene transakcije se lahko izvajajo tudi ukazi drugih transakcij.
Neodvisnost
Transakcije so med seboj neodvisne, če se lahko izvajajo v poljubnem vrstnem redu: zaporedno ali prepletajoče, pri čemer se kakšne izmed transakcij lahko zaključijo tudi neuspešno
Če vsaka izmed transakcij ohranja konsistentnost podatkovne baze, potem jo ohranja tudi vsak njihov zaporedni razpored.
Nekateri prepletajoči razporedi ne ohranjajo konsistentnosti PB Tisti prepletajoči razpored, ki učinkuje na PB enako kot kak izmed zaporednih razporedov, se imenuje zaporedniški razpored
Velja naslednje: Če vsaka izmed transakcij ohranja konsistentnost podatkovne baze, potem jo ohranja tudi vsak njihov zaporedniški razpored
Nadzor nad sočasno uporabo PB mora zagotoviti prepletajoče izvajanje transakcij po enem izmed možnih zaporedniških razporedov
Pri sočasni uporabi PB se včasih pripeti, da se konsistentnost podatkov ohrani, nekonsistentni pa so rezultati povpraševanja, kar kaže primer na desni
RAZLOG: vsota po vseh računih se je ohranila in je enaka 600, transakcija T2 pa jo je izračunala napačno: v = 610. Razlog je v tem, ker je T2 prebrala podatek R1 pred ažuriranjem, podatek R2 pa po ažuriranju
Rezultat povpraševanja transakcije T2 iz primera lahko ocenimo kot približno točen ali pa kot napačen. Če so zahtevani popolnoma natančni rezultati, mora nadzor nad sočasno uporabo podatkovne baze zagotoviti tudi konsistentnost povpraševanj v podatkovni bazi.