Sočasno izvajanje transakcij

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

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.

T0 T1
PoiščiPreberi(R1,a)

a := a - 10

Ažuriraj(R1,a)

PoiščiPreberi(R2,b)

b := b + 10

Ažuriraj(R2,b)

Pomni

 
  PoiščiPreberi(R2,c)

c := c - 20

Ažuriraj(R2,c)

PoiščiPreberi(R3,d)

d := d + 20

Ažuriraj(R3,d)

Pomni

T0 T1
  PoiščiPreberi(R2,c)

c := c - 20

Ažuriraj(R2,c)

PoiščiPreberi(R3,d)

d := d + 20

Ažuriraj(R3,d)

Pomni

PoiščiPreberi(R1,a)

a := a - 10

Ažuriraj(R1,a)

PoiščiPreberi(R2,b)

b := b + 10

Ažuriraj(R2,b)

Pomni

 

  • 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. Sočasno izvajanje transakcij.png

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.

Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja