BD-2st-1.2-w09.tresc-1.1-Slajd12

Z Studia Informatyczne
Wersja z dnia 11:40, 28 sie 2006 autorstwa PKrzyzagorski (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Algorytm blokowania dwufazowego (1)

Algorytm blokowania dwufazowego (1)


Jak widać z poprzedniego przykładu stosowanie blokad na danych nie gwarantuje automatycznie uszeregowalności realizacji zbioru transakcji. Okazuje się, że istotna jest kolejność zakładania i zdejmowania blokad. Ilustruje to podstawowy algorytm blokowania, nazywany algorytmem blokowania dwu-fazowego (2PL). Podstawowa wersja algorytmu 2PL ma następującą postać:

1.Każda operacja odczytu danej X przez transakcję T (read(X )) musi być poprzedzona operacją zablokowania danej X w trybie do odczytu (R_lock(X , T )) lub w trybie do zapisu (W_lock(X , T )).

2.Każda operacja zapisu danej X przez transakcję T (write(X )) musi być poprzedzona operacją W_lock(X , T ).

3.Operacje odblokowania danej X (unlock(x,T )) dla danej transakcji T są wykonywane po zakończeniu wszystkich operacji read i write .

Jak widać z przedstawionego schematu, realizacja transakcji, zgodnie z algorytmem 2PL, przebiega w dwóch fazach (stąd nazwa algorytmu): w fazie ekspansji oraz w fazie zwijania. W fazie ekspansji transakcja zakłada blokady kolejnych danych, nie zwalniając żadnej z uzyskanych blokad, aż do osiągnięcia punktu akceptacji. W fazie zwijania transakcja zwalnia blokady wszystkich danych, nie może żądać natomiast założenia żadnej blokady.


<< Poprzedni slajd | Spis treści | Następny slajd >>