Sr-6-wyk-2.0-Slajd30

Z Studia Informatyczne
Wersja z dnia 08:18, 9 wrz 2006 autorstwa Bgrabiec (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Sterowanie współbieżnością – problemy

Sterowanie współbieżnością – problemy


Sterowanie współbieżnością transakcji napotyka na dwa zasadnicze problemy: problem utraconej aktualizacji oraz problem niespójnych odzyskań .

Zilustrujmy teraz problem utraconej aktualizacji na przykładzie dwóch współbieżnych transakcji, dokonujących operacji na wspólnej danej. Przypuśćmy, że istnieje pewna dana x równa 5, do której transakcja T1 chce dodać wartość 3, a transakcja T2 chce dodać wartość 2. Załóżmy, że scenariusz wykonania obu transakcji wygląda następująco: transakcja T1 odczytuje wartość x , chwilę później wartość x odczytuje transakcja T2 , transakcja T1 dodaje do x wartość 3, transakcja T2 dodaje do x 2. Ostatecznie wszystkie te operacje sprawiły, że x jest równy 7, mimo że powinien wynieść 10. Stało się tak dlatego, iż wartości x jaką modyfikowała transakcja T2 była nieaktualna w momencie zapisu. Innymi słowy transakcja T2 polegała na odczycie, który był nieaktualny.

Prześledźmy drugi przykład, w którym występuje z kolei problem niespójnych odzyskań. Znowu załóżmy, że mamy dwie współbieżne transakcje T1 i T2 , które operują na zmiennych x i y , które początkowo przyjmują odpowiednio wartości 5 i 4. Transakcja T1 odejmuje wartość 2 od x , a następnie dodaje ją do y . Transakcja T2 ma za zadanie zsumowanie wartości x i y . Scenariusz wykonania transakcji niech wygląda następująco: transakcja T1 odczytuje wartość x , transakcja T1 zmniejsza odczytaną wartość x o 2, transakcja T2 odczytuje wartość x , transakcja T2 odczytuje wartość y i sumuje z wcześniej odczytaną wartością, transakcja T1 odczytuje wartość y i dodaje do niej wartość 2. Suma uzyskana przez transakcję T2 wyniosła ostatecznie 7, a powinna oczywiście 9. Błąd, który został tu popełniony, to zsumowanie przez transakcję T2 wartości x i y , podczas gdy transakcja T1 wykonała się tylko częściowo.


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