Adatbázisok - Tranzakciókezelés gyakorlat

A VIK Wikiből
A lap korábbi változatát látod, amilyen U944eq (vitalap | szerkesztései) 2013. február 3., 11:51-kor történt szerkesztése után volt. (U944eq átnevezte a(z) Adatbázisok 6. gyakorlatbrTranzakciókezelés lapot a következő névre: Adatbázisok - Tranzakciókezelés gyakorlat)
Ugrás a navigációhoz Ugrás a kereséshez

Feladatok

1. feladat

  • Legális-e az alábbi ütemezés? Ha nem, mit kellene javítani rajta, hogy azzá váljon?*
T1 T2 T3
RLOCK B
READ B
WLOCK B
RLOCK A
WRITE B
UNLOCK B
READ A
RLOCK A
READ A
UNLOCK B
UNLOCK A

2. feladat

  • Rajzold fel a sorosíthatósági gráfot RLOCK-WLOCK modellben! Mi módosul, ha RLOCK/WLOCK helyett LOCK szerepel?*
T1 T2 T3 T4
WLOCK A
UNLOCK A
RLOCK A
UNLOCK A
RLOCK A
UNLOCK A
WLOCK A
UNLOCK A

3. feladat

  • Ellenőrizd, hogy legális-e az alábbi ütemezés! Rajzold mega sorosíthaósági gráfot, döntsd el, hogy sososítható- az ütemezés. Ha igen, adj egy soros ekvivalenst, ha nem mutasd meg, miért nem. Hogy nézne ki a gráf, ha RLOCK-WLOCK modellt használnánk (ahol csak olvasunk, ott RLOCK-kal, ahol írunk (is) ott WLOCK-kal helyettesítjük értelemszerűen a LOCK-ot)?*
T1 T2 T3 T4
*(1)* LOCK B
*(2)* LOCK A
*(3)* LOCK C
*(4)* LOCK D
*(5)* WRITE D
*(6)* READ C
*(7)* WRITE A
*(8)* UNLOCK D
*(9)* LOCK E
*(10)* LOCK D
*(11)* READ D
*(12)* UNLOCK A
*(13)* READ E
*(14)* UNLOCK C
*(15)* READ D
*(16)* UNLOCK D
*(17)* WRITE B
*(18)* LOCK C
*(19)* LOCK D
*(20)* UNLOCK E
*(21)* WRITE C
*(22)* READ D
*(23)* LOCK A
*(24)* UNLOCK B
*(25)* LOCK B
*(26)* READ A
*(27)* UNLOCK A
*(28)* UNLOCK D
*(29)* WRITE B
*(30)* LOCK E
*(31)* READ E
*(32)* UNLOCK B
*(33)* LOCK A
*(34)* UNLOCK E
*(35)* UNLOCK C
*(36)* READ A
*(37)* UNLOCK A
*(38)* LOCK E
*(39)* WRITE E
*(40)* UNLOCK E

4. feladat

  • Legális-e az ütemezés? A tranzakciók követik-e a 2LP-t? Hol van az alábbi tranzakciók zárpontja? Mi egy soros ekvivalens ütemezés?*
T1 T2 T3
LOCK A
LOCK B
LOCK C
LOCK D
LOCK E
UNLOCK A
UNLOCK D
LOCK A
LOCK D
UNLOCK E
UNLOCK B
UNLOCK C
UNLOCK A
UNLOCK D

5. feladat

  • Időbélyeges tranzakciókezelést használunk R/W modellben. Jegyezd fel az alábbi sorozat minden művelete után az R(A), R(B), W(A), W(B) értékeit, ha kezdetben mindegyik 0. Mely tranzakciók abortálnak? [math] r_i [/math] és [math] w_i [/math] a [math] Ti [/math] tranzakció olvasás (r) és írás műveleteit (w) jelöli, és [math]t(T_i)=i[/math].*

[math] r_1(A) w_2(B), r_3(A), w_1(B), r_2(A), r_4(B), w_4(A), w_3(B) [/math]

6. feladat

  • Oldjuk meg az előbbi feladatot verziókezeléssel kiegészítve! Most mi történik?*

7. feladat

  • Egy rendszerleállás után a napló vége az alábbi bejegyzéseket tartalmazza. Melyek a redo helyreállítás lépései? Mi lesz a helyreállítás utan A, B és C értéke?*

checkpoint

  • (T1,begin)
    *

(T2,begin)

  • (T2,A,20)
    *

(T2,B,10)

  • (T1,A,2)
    *

(T3,begin)

  • (T1,C,5)
    *

(T1,commit)

  • (T3,C,6)
    *

(T3,commit)

Gondolkodtató feladatok

  • 1. A naplózás tárhely igényét szeretnénk optimalizálni. Helyes-e a következő érvelés? Mivel egy tranzakciónak csak a COMMIT pontjáig van szüksége a naplóra - hiszen a COMMIT utáni műveletek biztosan lefutnak -, ezért szigorú 2PL alkalmazásával megelőzzük a lavinahatást, és a COMMIT naplózása helyett így a naplóból már törölhetjük az adott tranzakcióhoz tartozó bejegyzéseket (ha garantáljuk ezen törlés atomicitását).
  • 2. Hogyan biztosítja a holtpontmentességet a 2PL?
  • 3. Igaz-e, hogy egy kétfázisú protokoll esetén a tranzakciók midig helyesen futnak le? (Mit jelenthet az, hogy "helyesen"?)
  • 4. Lehet-e konkurensen módosítani egy állományt, amire B* fa épül? Mikor lehet felszabadítani a gyökér elemet fogó zárat?
  • 5. Miért fontos a sorosíthatóság?
  • 6. Egy ütemezés nem sorosítható, ennek ellenére érvényes lehet-e az izolációs elv?
  • 7. Ha a naplófájl tartalmaz minden információt a változásokról, akkor miért kell az adatbázis?
  • 8. Mondj példát kézenfekvő soros ekvivalensre 2PL és időbélyeges tranzakciókezelés esetén?
  • 9. Mikor érdemes 2PL-t és mikor időbélyeges tranzakciókezelést alkalmazni?
  • 10. Mi történik a sorosíthatósági gráffal, ha egy tranzakció abortál?
  • 11. Az időbélyeges tranzakciókezelés miként véd a holtpont ellen?
  • 12. Mondj példát vagy ellenpéldát a következő esetekre!
    • Időbélyeges tranzakciókezelés esetén egy tranzakció READ esetén abortál.
    • Időbélyeges tranzakciókezelés esetén egy tranzakció WRITE esetén abortál.
    • Időbélyeges tranzakciókezelést verziókezeléssel együtt alkalmazunk. Egy tranzakció READ esetén abortál.
    • Időbélyeges tranzakciókezelést verziókezeléssel együtt alkalmazunk. Egy tranzakció WRITE esetén abortál.
  • 13. Hogyan tároljuk az időbélyegeket? Mit tudunk mondani a számukra vonatkozóan? Meddig kell fenntartani?