Adatbázisok - Tranzakciókezelés gyakorlat
A VIK Wikiből
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? és a tranzakció olvasás (r) és írás műveleteit (w) jelöli, és .*
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?