Adatbázisok - Tranzakciókezelés gyakorlat
A VIK Wikiből
Ez az oldal a korábbi SCH wikiről lett áthozva.
Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!
Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.
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?