Oskar Skibski, grupa nr 4, sala 2043
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.
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).
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