BD-2st-1.2-w09.tresc-1.1-Slajd11
Algorytm blokowania (1)
Rozważmy następujący przykład przedstawiony na slajdzie ilustrujący działanie mechanizmu zakładania i zdejmowania blokad. Dane są transakcje T1 i T2. Transakcja T1 odczytuje wartości danych X i Y. Następnie sumuje te wartości i zapisuje do danej X. Transakcja 2 odczytuje wartości danych X i Y. Następnie sumuje te wartości i zapisuje do danej Y.
Załóżmy, że wartości początkowe danych X i Y wynoszą, odpowiednio, 20 i 30. Współbieżne wykonanie transakcji T1 i T2 przebiega następująco. Transakcja T1 przed odczytem Y zakłada blokadę do odczytu tej danej. Po wykonaniu operacji odczytu, zdejmuje blokadę danej Y. Współbieżnie, transakcja T2 przed odczytem X zakłada blokadę do odczytu tej danej. Po wykonaniu operacji odczytu, zdejmuje blokadę danej X. Następnie, transakcja T1 zakłada blokadę do zapisu danej X, wykonuje odczyt danej X, aktualizuje wartość danej X, zapisuje zmodyfikowaną wartość danej X i zdejmuje blokadę do zapisu danej X. Następnie, transakcja T2 zakłada blokadę do zapisu danej Y, wykonuje odczyt danej Y, aktualizuje wartość danej Y zapisuje zmodyfikowaną wartość danej Y i zdejmuje blokadę do zapisu danej Y.
Końcowy stan bazy danych uzyskany w wyniku przedstawionego współbieżnego wykonania transakcji T1 i T2 wynosi X=50 i Y=50. Zauważmy, że stan bazy danych uzyskany w wyniku sekwencyjnej realizacji transakcji T1 i T2 różni się od stanu bazy danych uzyskanego w wyniku przedstawionego współbieżnego wykonania transakcji T1 i T2. Dla realizacji sekwencyjnej, w której transakcja T1 poprzedza transakcję T2 końcowy stan bazy danych wynosi X=50 i Y=80, natomiast dla realizacji sekwencyjnej, w której transakcja T2 poprzedza transakcję T1 końcowy stan bazy danych wynosi X=70 i Y=50. Oznacza to, że przedstawiona realizacja współbieżna transakcji jest nieuszeregowalna.
Stosowanie blokad na danych nie gwarantuje automatycznie uszeregowalności realizacji zbioru transakcji.