56
Tranzakciók gyakorlati anyag PPKE-ITK, Database Systems, 2010.

Tranzakciók gyakorlati anyag

  • Upload
    silvio

  • View
    23

  • Download
    0

Embed Size (px)

DESCRIPTION

Tranzakciók gyakorlati anyag. PPKE-ITK, Database Systems, 2010. Definíció: tranzakciók. Pl. bank, wiki , jegyfoglalás, neptun , stb …. Olyan program-végrehajtási egységek, amik az adatbázison valamilyen műveleteket végeznek. olvasás : vö. SELECT, X: adattagon read (X) - PowerPoint PPT Presentation

Citation preview

Page 1: Tranzakciók gyakorlati  anyag

Tranzakciókgyakorlati anyag

PPKE-ITK, Database Systems, 2010.

Page 2: Tranzakciók gyakorlati  anyag

Definíció: tranzakciók

Olyan program-végrehajtási egységek, amik az adatbázison valamilyen műveleteket végeznek.

olvasás: vö. SELECT, X: adattagon

read(X)

írás, törlés, módosítás: vö. INSERT, DELETE,

UPDATE

 write(X)

2Database Systems - Tranzakciók (gyakorlat)

Pl. bank, wiki, jegyfoglalás, neptun, stb…

Page 3: Tranzakciók gyakorlati  anyag

Elvárások tranzakciókezeléskor: ACID Atomosság (Atomicity)

A tranzakció vagy teljes egészében, vagy egyáltalán ne hajtódjon végre. – helyreállító egység (recovery manager)

Adatbázis helyessége (Consistency) (konzisztencia, következetesség) A tranzakció hatására az adatbázis a kezdeti konzisztens

állapotból egy másik konzisztens állapotba jut. – programozó feladata

Elkülönítés (Isolation) A tranzakció befejeződése után az adatbázis állapota csak

olyan lehet, mintha a tranzakció egyedül futott volna, nem párhuzamosan a többivel. – tranzakció kezelő (ütemező)

Tartósság(Durability) A tranzakció befejeződése után annak eredménye nem

veszhet el, be kell jegyezni az adatbázisba. – tranzakció kezelő (ütemező), helyreállító egység 3Database Systems - Tranzakciók

(gyakorlat)

Page 4: Tranzakciók gyakorlati  anyag

Tranzakció példa – sörösüvegek x: kamrában lévő üvegek száma (adattag) y: hűtőben lévő üvegek száma (adattag) T1: a kamrából N db-ot átteszek a hűtőbe

(tranzakció) T2: apu hozott M db üveggel a kamrába

(tranzakció) T3: megiszunk O db üveggel a hűtőből

(tranzakció)

T1 T2 T3

read(x) read(x) read(y)

x:=x-N x:=x+M y:=y-O

write(x) write(x) write(y)

read(y)

y:=y+N

write(y)4Database Systems - Tranzakciók

(gyakorlat)

Page 5: Tranzakciók gyakorlati  anyag

Ütemezés (Scheduling)

Olyan szekvenciák, amik megmutatják az időbeli sorrendjét az egyidejűleg futó tranzakciók műveleteinek

Soros ütemezés: egymás után futnak le a tranzakciók T1, T2, T6, T3, … az ilyen mindig konzisztens

Párhuzamos ütemezés: egyszerre több tranzakció fut párhuzamosan egy tranzakció egyik művelete megelőzhet, egy másik

művelete követheti egy másik tranzakció egy műveletét… 5Database Systems - Tranzakciók

(gyakorlat)

Page 6: Tranzakciók gyakorlati  anyag

Ütemezés – példa

T1 T2 T3read(x) read(x) read(y)x:=x-N x:=x+M y:=y-Owrite(x) write(x) write(y)

read(y)

y:=y+N

write(y)

Mi lesz x és y, ha a kezdőértékek: x=15; y=5; N=5; M=10; O=2

a) Ha T1 lefut, majd T2 és T3? (soros ütemezés) T1 után x=10,y=10, T2 után x=20,y=10, T3 után

x=20,y=8

b) Ha T2 fut le először, majd T3 és végül T1? (soros)

T2 után x=25,y=5, T3 után x=25,y=3, T1 után x=20,y=8

c) Egyéb sorrendben, ahol egymás után futnak le a tranzakciók? (soros)

végül mindig: x=20,y=8

d) És ha párhuzamosan, akkor veszítünk adatot? lásd a következő ábrán: 6Database Systems - Tranzakciók

(gyakorlat)

Page 7: Tranzakciók gyakorlati  anyag

Párhuzamos ütemezés – példaT1 T2 T3

read(x)

x:=x-N

read(x)

x:=x+M

write(x)

read(y)

write(x)

y:=y+N

read(y)

y:=y-O

write(y)

write(y)

Veszítünk adatot? igen veszítünk adatot, mivel az x és y

változok sem lesznek kiírva a következő olvasás előtt

x=25, y=3

Kezdőértékek:x=15; y=5; N=5; M=10; O=2

7Database Systems - Tranzakciók (gyakorlat)

Page 8: Tranzakciók gyakorlati  anyag

Konfliktus, ekvivalencia, sorosíthatóság

Conflicting tranzakciók: azok a tranzakciók, amelyek ugyanazon az adattagon

dolgoznak, és legalább az egyik írni szeretné

Ha egy S ütemezés átalakítható egy S’ ütemezésre non-conflicting műveletek cseréjével, akkor:

S és S’ konfliktus ekvivalens.

Két művelet non-conflicting: Ha különböző adattagon dolgoznak, vagy ha

ugyanazon, de mindkettő csak olvassa. 

Ha egy S ütemezés konfliktus ekvivalens egy S’ soros ütemezéssel, akkor

az S ütemezés konfliktus sorosítható.

8Database Systems - Tranzakciók (gyakorlat)

Page 9: Tranzakciók gyakorlati  anyag

Konfliktus-ekvivalencia – példa Konfliktus-ekvivalens, konfliktus sorosítható:

T1 T2 T3read(x)write(x)

read(x)read(y)

write(x)write(y)

read(y)write(y)

T1 T2 T3read(x)write(x)read(y)write(y)

read(x)write(x)

read(y)write(y)

9Database Systems - Tranzakciók (gyakorlat)

Page 10: Tranzakciók gyakorlati  anyag

Database Systems - Tranzakciók (gyakorlat) 10

Page 11: Tranzakciók gyakorlati  anyag

Nézet ekvivalencia – definíció Legyen S és S’ két ütemezés ugyanazon

tranzakciós műveletekkel. Ezek nézet ekvivalensek, ha: minden X adatelemre, ha Ti olvassa S-ben X-

kezdőértékét, akkor S’-ben is ugyanúgy kell olvasnia Ti-nek X kezdőértékét ÉS

minden X adatelemre, ha Ti S-ben olvassa X-et, amely X egy létező Tj tranzakciótól származik, akkor Ti-nek S’ ütemezésben ugyanúgy egy létező Tj által adott értéket kell olvasnia, ÉS

minden X adatelemre, ha egy tranzakció S-ben az utolsó write(X) utasítást hajtja végre, akkor S’-ben ugyancsak write(X)-et kell csinálnia.

11Database Systems - Tranzakciók (gyakorlat)

Page 12: Tranzakciók gyakorlati  anyag

Database Systems - Tranzakciók (gyakorlat) 12

Page 13: Tranzakciók gyakorlati  anyag

Példa – Nézet ekvivalensek-e?

T1 T2 T3

read(X) 1

X:=X-N 2

3 read(X)

4 X:=X+M

write(X) 5

Read(Y) 6

7 write(X)

Y:=Y+N 8

write(Y) 9

read(y)

y:=y-O

write(y)13Database Systems - Tranzakciók

(gyakorlat)

T1 T2 T3

read(X) 1

X:=X-N 2

3 read(X)

4 X:=X+M

5 write(X)

write(X) 6

read(Y) 7

Y:=Y+N 8

write(Y) 9

read(y)

y:=y-O

write(y)

S ütemezés S’ ütemezés

Nem.

Page 14: Tranzakciók gyakorlati  anyag

Nézet és konfliktus ekvivalencia

Ami konfliktus ekvivalens, az nézet ekvivalens is.

Ami nézet ekvivalens, az nem biztos, hogy konfliktus ekvivalens is. Pl.:

vakonírás

14Database Systems - Tranzakciók (gyakorlat)

N-E.

K-E.

Page 15: Tranzakciók gyakorlati  anyag

Sorosíthatóság eldöntése, biztosítása

megelőzési gráf (gyakorlatban nem alkalmas)

különböző protokollok

kétfázisú protokoll

időbélyegzési protokoll (timestamping)

15Database Systems - Tranzakciók (gyakorlat)

Page 16: Tranzakciók gyakorlati  anyag

Megelőzési (precedencia) gráf irányított gráf, melynek csúcsai maguk a

tranzakciók, élei: (~ a conflicting műveleteknél:)

TiTk között fut él, ha Ti ugyanazt az adatot írta, amit Tk olvasni fog

TiTk ---------------| | --------------- olvasta -----| |---- írni fog

TiTk ---------------| | --------------- írta -----| |---- írni fog

Példa (1):

16Database Systems - Tranzakciók (gyakorlat)

T1 T2

read(A)

A := A – 50

write (A)

read(B)

B := B + 50

write(B)

read(A)

temp := A * 0.1

A := A – temp

write(A)

read(B)

B := B + temp

write(B)

A precedencia-gráfja:

Sorosítható-e? Sorosítható.

T1 T2A, B

Page 17: Tranzakciók gyakorlati  anyag

Database Systems - Tranzakciók (gyakorlat) 17

Page 18: Tranzakciók gyakorlati  anyag

Példák megelőzési gráfra (2)T1 T2 T3 T4

read(A)

read(B)

write(A)

read(C)

write(B)

read(C)

read(B)

18Database Systems - Tranzakciók (gyakorlat)

T1 T2

T3 T4

Sorosítható-e?- Igen.

Ha a gráf körmentes, akkor sorosítható.

A

B

B

Page 19: Tranzakciók gyakorlati  anyag

Database Systems - Tranzakciók (gyakorlat) 19

Page 20: Tranzakciók gyakorlati  anyag

Példák megelőzési gráfra (3)

20Database Systems - Tranzakciók (gyakorlat)

Nem körmentes, ezért nem sorosítható.

T1 T2

read(A)

A := A – 50

read(A)

temp := A * 0.1

A := A – temp

write(A)

read(B)

write (A)

read(B)

B := B + 50

write(B)

B := B + temp

write(B)

T1 T2

A, B

A, B

Page 21: Tranzakciók gyakorlati  anyag

Példák megelőzési gráfra (4)

21Database Systems - Tranzakciók (gyakorlat)

Döntse el a gráf alapján, hogy sorosítható-e? Ha igen, adjon meg legalább két sorrendet!

Sorosítható.

Megoldások pl:

T1-T2-T3-T4-T5-T6-T7

T1-T2-T3-T5-T4-T6-T7

T1 T2 T3

T4 T5 T6

T7

Page 22: Tranzakciók gyakorlati  anyag

Példák megelőzési gráfra (5)

22Database Systems - Tranzakciók (gyakorlat)

T1 T2 T3

T4 T5 T6

T7 T8

T9

Megoldás:Nem körmentes! T4-T5-(T3-T6-T8)-T7-T4

Page 23: Tranzakciók gyakorlati  anyag

Zárolási technikák (Locking) Minden adatelemhez hozzárendelünk egy

állapotjelzőt, amivel megadjuk,hogy mire használhatjuk az adatot, vagy, hogy használhatjuk-e. lock(X): a tranzakció lock-ol egy adatot, így azt addig

nem érheti el semmilyen tranzakció unlock(X): lock feloldása

ha csak ezeket használjuk, nem lesz optimális a rendszerünk teljesítménye.

vezessünk be új lock-okat lock-x(X): exclusive lock : csak az adott tranzakció

által használható az adat, mindenki más számára hozzáférhetetlen

lock-s(X): shared lock: (~ read only) mindegyik tranzakció csak olvashatja őt. 23Database Systems - Tranzakciók

(gyakorlat)

Page 24: Tranzakciók gyakorlati  anyag

Zárolási technikák (Locking) (folyt.)

és tételezzük fel ezekről a lockokról, hogy: a tranzakciónak kötelezően mindig küldenie kell

egy kérelmet (request), ha írni/olvasni akar egye adatelemet

ha már nincs szüksége az adatelemre, unlockolja

a tranzakció nem lockolja, ha már egyszer őnála van

ugyanígy, ne unlockolja, ha nincs nála

24Database Systems - Tranzakciók (gyakorlat)

Page 25: Tranzakciók gyakorlati  anyag

Példa – zárolási technikára – 1.

X=20, Y=10Ütemezés: T1, T2 Eredmény:X=15, Y=25

Ütemezés: T2, T1 Eredmény:X= 5, Y=3025Database Systems - Tranzakciók

(gyakorlat)

T1 T2

lock-x(x) lock-s(y)

read(x) read(y)

X:=X-Y/2 unlock(y)

write(x) lock-x(y)

unlock(x) read(y)

lock-s(y) Y:=Y+X

read(y) write(y)

unlock(y) unlock(y)

Page 26: Tranzakciók gyakorlati  anyag

Példa – zárolási technikára – 2.

26Database Systems - Tranzakciók (gyakorlat)

T1 T2

read(B)

B := B-50

write(B)

read(A)

read(B)

read(A)

A := A+50

write(A)

Határozd meg a lockokat a következő ütemezésben: T1 T2

lock-X(B)

read(B)

B := B 50

write(B)

unlock(B)

lock-S(A)

read(A)

unlock(A)

lock-S(B)

read(B)

unlock(B)

lock-X(A)

read(A)

A := A + 50

write(A)

unlock(A)

Page 27: Tranzakciók gyakorlati  anyag

Kétfázisú zárolási protokoll

27Database Systems - Tranzakciók (gyakorlat)

Növekvő (growing) fázis: ebben a fázisban kell minden lock-ot kiadnia a

tranzakciónak

Csökkenő (shrinking) fázis: a zárolások feloldhatók, de új zárolás már

semmiképp sem adható ki ebben a fázisban

Page 28: Tranzakciók gyakorlati  anyag

28Database Systems - Tranzakciók (gyakorlat)

Kétfázisú zárolási protokoll

T1 T2

lock-s(Y) lock-s(X)read(Y) read(X)

lock-x(X) lock-x(Y)lock-x(Z)

unlock(Y) unlock(X)read(X) read(Y)X:=X+Y Y:=X+Y

Z:=X-Ywrite(X) write(Y)

write(Z)unlock(X) unlock(Y)

unlock(Z)

Growing Phase:

Shrinking Phase:

MJ: Tranzakciónként külön kell megállapítani a két fázist!

Growing Phase

Shrinking Phase

Page 29: Tranzakciók gyakorlati  anyag

Database Systems - Tranzakciók (gyakorlat)

Add locks, unlocks, denote the two phase!

29

Page 30: Tranzakciók gyakorlati  anyag

Tétel: A kétfázisú protokoll szerint futó tranzakciók

tetszőleges ütemezése sorbarendezhető.

30Database Systems - Tranzakciók (gyakorlat)

Kétfázisú zárolási protokoll tétele

Page 31: Tranzakciók gyakorlati  anyag

Lefut-e az alábbi összefésült kétfázisú ütemezés?

Mi lesz a végeredmény A=100, B=20 esetén?

Jelöld be a fázisokat!

Megoldás: Dead-Lock a

lock-x(B)—lock-s(A)—lock-s(B)—lock-x(A) miatt.

T1 T2lock-X(B) lock-S(A)

read(B) read(A)lock-X(A) lock-S(B)

read(A) read(B)B := B 50 unlock(A)write(B) unlock(B)

unlock(B)

A := A + 50

write(A)

unlock(A)

31Database Systems - Tranzakciók (gyakorlat)

Példa 1. – Kétfázisú zárolási protokoll

Growing Phase:

Shrinking Phase:

Page 32: Tranzakciók gyakorlati  anyag

T1 T2

lock-X(A)

read(A)

lock-S(B)

read(B)

lock-S(B)

read(B)

unlock(B)

A := A + B - 50

write(A)

unlock(A)

32Database Systems - Tranzakciók (gyakorlat)

Példa 2. – Kétfázisú zárolási protokoll

Lefut-e az alábbi összefésült kétfázisú ütemezés?

Mi lesz a végeredmény A=100, B=20 esetén?

Jelöld be a fázisokat!

Megoldás: Igen, lefut. A végeredmény:

A=70, B=20 lesz.

Growing Phase:

Shrinking Phase:

Page 33: Tranzakciók gyakorlati  anyag

09-05-11Database Systems - Tranzakciók (gyakorlat) 33

Page 34: Tranzakciók gyakorlati  anyag

Database Systems - Tranzakciók (gyakorlat) 34

Page 35: Tranzakciók gyakorlati  anyag

35Database Systems - Tranzakciók (gyakorlat)

Példa: bankautomata, tranzakciószám, stb…

Minden tranzakció kap egy időbélyeget:

TS(Ti): i a tranzakció fiatalságát jelenti

kisebb TS ~ öregebb! (vö. szül. évszám…)

Minden adat is kap egy írási és egy olvasási

időbélyeget:

read-timestamp: RTS(X) – X az adat

write-timestamp: WTS(X) – X az adat lényegében legutóbb/legfiatalabbként kiolvasó/beíró

tranzakció TS-je

mindig a fiatalabb van előnyben, ha az öregebb akar olvasni,

az elavult

Időbélyegzési technika, TimeStamping

Page 36: Tranzakciók gyakorlati  anyag

Szabályok – Időbélyegzési technika

1. Legyen Tj tranzakció, mely read(X) műveletet szeretnea)Ha TS(Tj) < W-timestamp(X), akkor Tj X-nek olyan értékét

olvasná ki, amit már fölülírtak azóta, így ezt a read-et elutasítjuk (+Tj rollback)

b)Ha TS(Tj) ≥ W-timestamp(X), akkor megtörténik az olvasás, és a R-timestamp(X) értékét az R-timestamp(X) és a TS(Tj) közül a legnagyobb értékére állítjuk max{r-timestamp(x),TS(Ti)}

2. Legyen Tj tranzakció olyan, mely write(X) műveletet hajtana végre

c)Ha TS(Tj) < W-timestamp(X), akkor Tj egy elavult adatot írna, így ezt a write-ot elutasítjuk (+Tj rollback)

d)Ha TS(Tj) < R-timestamp(X), akkor Tj olyanra állítaná be X-et, amit azóta már kiolvastak, így ezt a write-ot elutasítjuk (+Tj rollback)

e)Egyébként az írás végrehajtódik, és W-timestamp(X) értékét TS(Tj)-re állítjuk

36Database Systems - Tranzakciók (gyakorlat)

Page 37: Tranzakciók gyakorlati  anyag

Szabályok – Időbélyegzési technika1. Legyen Tj tranzakció, mely read(X) műveletet szeretne

a) Ha TS(Tj) < W-timestamp(X), akkor Tj X-nek olyan értékét olvasná ki, amit már fölülírtak azóta, így ezt a read-et elutasítjuk (+Tj rollback)

b) Ha TS(Tj) ≥ W-timestamp(X), akkor megtörténik az olvasás, és a R-timestamp(X) értékét az R-timestamp(X) és a TS(Tj) közül a legnagyobb értékére állítjuk max{r-timestamp(x),TS(Ti)}

2. Legyen Tj tranzakció olyan, mely write(X) műveletet hajtana végre

c) Ha TS(Tj) < W-timestamp(X), akkor Tj egy elavult adatot írna, így ezt a write-ot elutasítjuk (+Tj rollback)

d) Ha TS(Tj) < R-timestamp(X), akkor Tj olyanra állítaná be X-et, amit azóta már kiolvastak, így ezt a write-ot elutasítjuk (+Tj rollback)

e) Egyébként az írás végrehajtódik, és W-timestamp(X) értékét TS(Tj)-re állítjuk

Thomas’ Writing Rule: 2. a) ~vakoníráskor: Tj-ben write(X) igény =>

ha RTS(X) < TS(Tj) < WTS(X), akkor a write(X) művelet nem futhat le, de a tranzakció folytatódhat, mégsincs abort és rollback.

37Database Systems - Tranzakciók (gyakorlat)

Page 38: Tranzakciók gyakorlati  anyag

Példa 1.

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1

38Database Systems - Tranzakciók (gyakorlat)

Page 39: Tranzakciók gyakorlati  anyag

Példa 1. – 1. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1

RTS(X)=nullWTS(X)=nullTS(T2)=2

1. b) szabály

RTS(X)=2

39Database Systems - Tranzakciók (gyakorlat)

Page 40: Tranzakciók gyakorlati  anyag

Példa 1. – 2. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1RTS(Z)=nullWTS(Z)=nullTS(T3)=32. c) szabály

RTS(X)=2

WTS(Z)=3

40Database Systems - Tranzakciók (gyakorlat)

Page 41: Tranzakciók gyakorlati  anyag

Példa 1. – 3. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1 RTS(X)=2WTS(X)=nullTS(T1)=11. b) szabály

WTS(Z)=3

TS(T1) ? RTS(X)1 < 2

RTS(X)=2

RTS(X)=2

41Database Systems - Tranzakciók (gyakorlat)

Page 42: Tranzakciók gyakorlati  anyag

Példa 1. – 4. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1RTS(X)=2WTS(X)=nullTS(T4)=41. b) szabály

WTS(Z)=3

TS(T4) ? RTS(X)4 > 2

RTS(X)=4

RTS(X)=2

RTS(X)=2

42Database Systems - Tranzakciók (gyakorlat)

Page 43: Tranzakciók gyakorlati  anyag

Példa 1. – 5. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1

RTS(X)=4WTS(X)=nullTS(T3)=31. b) szabály

WTS(Z)=3

TS(T3) ? RTS(X)3 < 4

RTS(X)=2

RTS(X)=4

RTS(X)=2

RTS(X)=4

43Database Systems - Tranzakciók (gyakorlat)

Page 44: Tranzakciók gyakorlati  anyag

Példa 1. – 6. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1

RTS(Y)=nullWTS(Y)=nullTS(T2)=22. c) szabály

WTS(Z)=3

RTS(X)=2

WTS(Y)=2

RTS(X)=2

RTS(X)=4

RTS(X)=4

44Database Systems - Tranzakciók (gyakorlat)

Page 45: Tranzakciók gyakorlati  anyag

Példa 1. – 7. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1

RTS(Y)=nullWTS(Y)=2

TS(T4)=4

1. b) szabály

WTS(Z)=3

RTS(X)=2

RTS(Y)=4

RTS(X)=2

RTS(X)=4

RTS(X)=4

WTS(Y)=2

1. read-kérdés:TS(T4) ? WTS(Y)

4 > 2

45Database Systems - Tranzakciók (gyakorlat)

Page 46: Tranzakciók gyakorlati  anyag

Példa 1. – 8. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1

RTS(Z)=null

WTS(Z)=3TS(T2)=2

1. a) szabály

WTS(Z)=3

RTS(X)=2

T2 abortál+ rollback:WTS(Y):=n

ull

RTS(X)=2

RTS(X)=4

RTS(X)=4

WTS(Y)=2

RTS(Y)=4

1. read-kérdés:TS(T2) ? WTS(Z)

2 < 3

46Database Systems - Tranzakciók (gyakorlat)

Page 47: Tranzakciók gyakorlati  anyag

Példa 1. – 9. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1

RTS(X)=4WTS(X)=nu

llTS(T1)=1

2. b) szabály

WTS(Z)=3

RTS(X)=2

T1 abortál(+

rollback: nincs mit)

RTS(X)=2

RTS(X)=4

RTS(X)=4

WTS(Y)=2 2. write-kérdés:TS(T1) ? RTS(X)

1 < 4RTS(Y)=4

47Database Systems - Tranzakciók (gyakorlat)

Page 48: Tranzakciók gyakorlati  anyag

Példa 1. – 10. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1

RTS(X)=4WTS(X)=nu

llTS(T5)=5

WTS(Z)=3

RTS(X)=2

RTS(X)=2

RTS(X)=4

RTS(X)=4

RTS(Y)=4

1. b) szabályTS(T5) ?

RTS(X)5 > 4

RTS(X)=5

48Database Systems - Tranzakciók (gyakorlat)

Page 49: Tranzakciók gyakorlati  anyag

Példa 1. – 11. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1

RTS(Y)=4WTS(Y)= 2

nullTS(T3)=3

WTS(Z)=3

RTS(X)=2

RTS(X)=2

RTS(X)=4

RTS(X)=4

RTS(Y)=4

1. b) szabályTS(T3) ? RTS(Y)

3 < 4

RTS(Y)=4

RTS(X)=5

1. read-kérdés:TS(T3) ? WTS(Y)

3 > null

49Database Systems - Tranzakciók (gyakorlat)

Page 50: Tranzakciók gyakorlati  anyag

50

Példa 1. – 12. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1

WTS(Z)=3

RTS(X)=2

RTS(X)=2

RTS(X)=4

RTS(X)=4

WTS(Y)=2

RTS(Y)=4

2.c) szabály

WTS(Y)=5

RTS(X)=5

2. write-kérdés:TS(T5) ? WTS(Y)

5 > nullTS(T5) ? RTS(Y)

5 > 4

RTS(Y)=4

Database Systems - Tranzakciók (gyakorlat)

RTS(Y)=4WTS(Y)= 2

nullTS(T5)=5

Page 51: Tranzakciók gyakorlati  anyag

51

Példa 1. – 13. lépés

write(Y)13.

12.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Y)

read(Y)

read(X)

write(X)

read(Z)

read(Y)

write(Y)

read(X)

read(X)

read(X)

write(Z)

read(X)

T5T4T3T2T1

RTS(Y)=4WTS(Y)=5TS(T4)=4

WTS(Z)=3

RTS(X)=2

RTS(X)=2

RTS(X)=4

RTS(X)=4

WTS(Y)=2

RTS(Y)=4

2.b) szabály

RTS(X)=5

2. write-kérdés:TS(T4) ? WTS(Y)

4 < 5

RTS(Y)=4WTS(Y)=5

T4 abortál+

rollback:RTS(Y):=3

Database Systems - Tranzakciók (gyakorlat)

RTS(Y)=3

Page 52: Tranzakciók gyakorlati  anyag

Példa 1. – Thomas szabály?

Hogyan változna a lefutás, ha engedélyeznénk a Thomas írási szabályt?

A 13. lépésben write(Y)-igény van,RTS(Y)=4, WTS(Y)=5, TS(T4)=4

TS(T4)=4 < 5=WTS(Y) ütközik, de TS(T4)=4 = 4=RTS(Y) nem,

ezért a Thomas szabály értelmében nem fog lefutni ez a write(Y), viszont a T4 nem abortál, folytatódhat a tranzakció.

52Database Systems - Tranzakciók (gyakorlat)

Page 53: Tranzakciók gyakorlati  anyag

Példa 1. 13. – lépés Thomas szabállyal

T1 T2 T3 T4 T5

1. read(X)

2. write(Z)

3. read(X)

4. read(X)

5. read(X)

6. write(Y)

7. read(Y)

8. read(Z)

9. write(X)

10. read(X)

11. read(Y)

12. write(Y)

13. write(Y)

RTS(Y)=4WTS(Y)=5TS(T4)=4WTS(Z)=3

RTS(X)=2

RTS(X)=2

RTS(X)=4

RTS(X)=4

WTS(Y)=2

RTS(Y)=4

2.b) szabály

RTS(X)=5

2. write-kérdés:TS(T4) ? WTS(Y)

4 < 5

RTS(Y)=4WTS(Y)=5

T4 abortálna+ rollback( )

Thomas’ Writing Rule:

RTS(Y) ≤ TS(T4) < WTS(Y)

4 ≤ 4 < 5write(Y) nem hajtódik végre,

DE T4 folytatódhat!…

Page 54: Tranzakciók gyakorlati  anyag

Példa 1. – végeredmény

T3 és T5 tranzakció marad megX: read-ts(x)= 5

write-ts(x)= null (abort miatt)Y: read-ts(y)=3, Thomas’Rule-lal 4 marad.

write-ts(y)=5Z:read-ts(z)= null

write-ts(z)=3

54Database Systems - Tranzakciók (gyakorlat)

Page 55: Tranzakciók gyakorlati  anyag

Példa 2.

11.

10.

9.

8.

7.

6.

5.

4.

3.

2.

1.

write(Z)

write(Y)

write(Z)

read(X)

read(X)

read(Z)

write(Z)

write(Y)

read(Y)

read(Y)

read(X)

T5T4T3T2T1

55Database Systems - Tranzakciók (gyakorlat)

Page 56: Tranzakciók gyakorlati  anyag

Példa 2. – HF.

Mely tranzakciók abortálódnak?

Mik az adattagok időbélyegei?

Alkalmazható-e a Thomas writing rule?

56Database Systems - Tranzakciók (gyakorlat)