Oskar Skibski, grupa nr 4, sala 2043

Bazy danych 2015/16

Laboratorium 14 (25.01.2016) - TR / Transakcje

Transkacje są sposobem realizacji współbieżności między różnymi użytkownikami korzystającymi z bazy danych. Przy wykonywaniu transkacji zależy nam na paru cechach:

Po angielsku aksjomaty nazywa się ACID (czytać: ASIT. Przypadek??).

Ogólnie celujemy w plany szeregowalne, czyli takie które odpowiadają pewnemu wykonaniu transkacji w sposób szeregowy: najpierw jedna transkacja, potem druga itd.

Zadanie 1.

Czy poniższy plan jest szeregowalny?

T1: R(A),W(A)                      R(B),W(B)
T2:            R(A),W(A),R(B),W(B)
A ten?
T1: R(A)                     R(A),W(A)
T2:       R(A),W(A),Commit

Widzimy tutaj, że plany szeregowalne nie pozwalają nam uniknąć wszystkich możliwych problemów - może bowiem dojść do:

Najpopularniejszym sposobem radzenia sobie z tymi problemami jest mechanizm blokad dwufazowych: Strict 2PL:

Niestety, zdarzają się zakleszczenia, czyli sytuację w których parę procesów czeka na siebie nawzajem. Możemy albo im zapobiegać (przykładowo tylko młodszy proces czeka na starszy, nigdy odwrotnie), albo wykrywać (sprawdzać czy jest cykl i wówczas cofać jedną z transakcji).

Zadanie 2.

Rozrysuj graf oczekiwań na blokadę w podanym scenariuszu:

T1: S(A),R(A)             S(B)
T2:            X(B),W(B)                  X(C)
T3:                            S(C),R(C)               X(A)
T4:                                              X(B)
Czy wystąpiło tu zakleszczenie?

Transakcje są ładnie opisane tutaj: http://edu.pjwstk.edu.pl/wyklady/szb/scb/rW11.htm


Oskar Skibski (oski@mimuw.edu.pl), Wydział Matematyki, Informatyki i Mechaniki