BD-2st-1.2-w10.tresc-1.1-Slajd3

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Jednostka blokowania

Jednostka blokowania


Jeszcze innym problemem związanym z wyborem jednostki blokowania jest problemem efektywności działania systemu. Podstawową miarą oceny działania systemu bazy danych jest przepustowość systemu mierzona liczbą transakcji na sekundę. Rozważmy dwa przykładowe scenariusze wykonywania transakcji na relacji Pracownicy. Załóżmy, że relacja Pracownicy zawiera 50 tys. krotek. Dana jest transakcja, która aktualizuje zarobki wszystkich pracowników o 1%. Ta transakcja odczytuje wszystkie krotki relacji Pracownicy, a następnie, aktualizuje wartość atrybutu zarobki dla każdej krotki. Oznacza to konieczność założenia 50 tys. blokad do odczytu, które, następnie, są konwertowane do blokad do zapisu (50tys. konwersji blokad). Po wykonaniu transakcji, system wykonuje 50 tys. operacji odblokowania. Gdyby jednostką blokowania była cała relacja, wówczas wykonanie transakcji wymagałoby założenia jednej blokady na całej relacji, jednej operacji konwersji blokady, i jednej operacji zdjęcia blokady. Z drugiej strony, rozważmy współbieżne wykonanie dwóch transakcji, z których pierwsza odczytuje krotkę r1 relacji Pracownicy, natomiast druga aktualizuje krotkę r2 tej relacji. Gdyby obie transakcje zakładały blokady na poziomie całej relacji, to, oczywiście, wystąpiłby konflikt blokad pomiędzy transakcjami, co pociągnęłoby konieczność zawieszenia wykonywania jednej transakcji do czasu zdjęcia blokady przez drugą transakcję. Z punktu widzenia tego scenariusza, lepszym rozwiązaniem byłoby, przyjęcie jako jednostki blokowania, pojedynczej krotki bazy danych. Wybór jednostki blokowania jest zatem kompromisem między stopniem współbieżności systemu, a narzutem systemowym związanym z implementacją algorytmu blokowania:

– przepustowość systemu rośnie wraz ze zwiększaniem precyzji blokowania (zmniejszaniem liczby zablokowanych danych i zwiększaniem liczby blokad),

– precyzyjne blokowanie jest kosztowne dla złożonych transakcji, które wymagają długiego czasu utrzymywania dużej liczby blokad,

– blokowanie dużych jednostek danych wspiera złożone transakcje o dużej liczbie operacji, kosztem prostych transakcji o niewielkiej liczbie operacji.

Reasumując, potrzebny jest protokół, który będzie wspierał obydwa typy transakcji, to znaczy taki, który będzie umożliwiał równoczesne zakładanie blokad na różnych jednostkach danych.


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