STEROWANIE WSPÓŁBIEŻNOŚCIĄ
Prowadzący: mgr inż. Leszek Siwik Autorzy: Andrzej Mazur
Jacek Roman Michał Pawłowski
Zagadnienia: Lock-Based Protocols
Timestamp-Based Protocols
Validation-Based Protocols
Multiple Granularity
Multiversion Schemes
Zakleszczenia
Lock-Based Protocols Mechanizmem zarządzania
współbieżnym dostępem do danych jest blokada.
Zanim transakcje uzyska dostęp do danych musi założyć blokadę na te dane
Jeżeli transakcja posiada dostęp do zasobów, żadna inna transakcja nie może modyfikować tych zasobów
BlokadyNa dane może zostać nałożona :
blokada współdzielona (z ang. Shared lock) – dane mogą być odczytywane i zapisywane.
blokada wyłączna (z ang. Exclusive lock) – dane mogą być tylko odczytywane.
Zgodność blokad Dwie blokady są zgodne, jeżeli mogą być jednocześnie
założone na tą samą daną przez dwie różne transakcje.
PrzykładTransakcja A:
lock-X(B);read(B);B := B – 50;write(B);unlock(B);lock-X(A);read(A);A:=A+50;write(A);unlock(A);
Transakcja B:
lock-S(A);read(A);unlock(A);lock-S(B);read(B);unlock(B);display(A+B);
Granting of Locks – warunki przyznania blokady Nie ma innej transakcji, która trzymałaby
blokadę w sposób niekompatybilny z M
Nie ma innej transakcji, która czeka na założenie blokady na Q i która wysunęła żądanie zamknięcia przed Ti
The Two-Phase Locking Protocol Growing phase - transakcja może zakładać
blokady ale nie może zdejmować blokad
Shrinking phase – transakcja może zdejmować blokady, ale nie może zakładać nowych blokad
PrzykładTransakcja A:
lock-X(B);read(B);B:=B-50;write(B);lock-X(A);read(A);A:=A+50;write(A);unlock(B);unlock(A);
Transakcja B:
lock-S(A);read(A);lock-S(B);read(B);display(A+B);unlock(A);unlock(B);
Wady The Two-Phase Protocol Zakleszczenia Cascading rollbacks
Modyfikacje The Two-Phase Protocol Strict Two-Phase locking protocol
Blokady wyłączne nie mogą być zwolnione zanim transakcja nie będzie potwierdzona ( lub wycofana )
Rigorous Two-Phase locking protocolŻadna blokada nie może być zwolniona zanim transakcja nie będzie potwierdzona (lub wycofana )
Two-phase locking protocol with conversionsUpgrade – konwersja z blokady współdzielonej na wyłączną – tylko w growing phaseDowngrade – konwersja z blokady wyłącznej na współdzieloną – tylko w shrinking phase
Graph-Based Protocols Protokół ten wymaga więcej informacji o
sposobie dostępu transakcji do danych.
Zakłada się częściową kolejność zbioru D={d1,d2,...,dn}. Jeżeli didj to transakcja która wymaga dostępu do di i dj musi uzyskać wcześniej dostęp do di, niż do dj
Częściowa kolejność sprawia, że zbiór D może być teraz traktowany jak graf niecykliczny zwany detabase graph.
Tree protocolCechy Tree protocol detabase graph jest drzewem jedyną dozwoloną blokadą jest blokada wyłączna
Algorytm Tree-Protocol1. Pierwsza blokada może zostać założona na dowolnej danej 2. Następnie na daną Q może zostać nałożona blokada przez
transakcje Ti, jeżeli na nadrzędną daną jest założona blokada przez Ti
3. Dana może być odblokowane w dowolnym momencie 4. Dana na której była nałożona blokada przez transakcje nie
może zostać ponownie zablokowana przez tą transakcję
Tree protocol
Zalety i wady Tree protocolZalety: Blokadę można zdiąć szybciej niż w two-phase
protocol Wolny od zaklaszczeń
Wady: Transakcja może założyć blokadę na zasobie z
którego nie korzysta
Timestamp-Based Protocol Z każdą transakcją Ti w systemie powiązany jest
unikalny znacznik czasowy - timestamp – TS(Ti)
Znacznik czasowy jest przypisywany przez bazę danych transakcji, zanim zacznie być wykonywana.
Jeżeli pewna transakcja Ti ma znacznik czasowy TS(Ti) i nowa transakcja Tj „weszła” do systemu , to TS(Ti) < TS(Tj).
Metody zapewnienia TS(Ti) < TS(Tj) Używanie wartości zegara jako znacznika
czasowego
Używanie licznika – każdej nowej transakcji przypisywana jest wartość licznika, a następnie licznik jest inkrementowany.
TimestampsZ każdą daną powiązane są dwa znaczniki
czasowe:
W-timestamp(Q) – największy znacznik czasowy transakcji która dokonała operacji zapisu do danej Q
R-timestamp(Q) – największy znacznik czasowy transakcji która dokonała operacji odczytu danej Q
Timestmap-Ordering Protocol - odczyt Jeżeli TS(Ti) < W-timestamp(Q) – to Ti chce
odczytać wartość danej która jest w tym czasie nadpisana – transakcja zostanie anulowana
Jeżeli TS(Ti) ≥ W-timestamp(Q) – to operacja odczytu zostanie przeprowadzona, R-timestamp(Q) zostanie ustawiony na znacznik czasowy Ti
Timestmap-Ordering Protocol - zapis Jeżeli TS(Ti) < R-timestamp(Q) – wartość Q którą
obliczyła Ti była potrzebna wcześniej, operacja zapisu zostanie odrzucona i Ti będzie anulowana
Jeżeli TS(Ti) < W-timestamp(Q) - Ti próbuje zapisać przestarzałą wartość do Q, operacja zapisu zostanie odrzucona i Ti będzie anulowana
We wszystkich pozostałych przypadkach operacja zapisu zostanie poprawnie przeprowadzona i znacznik W-timestamp(Q) = TS(Ti)
Thomas’ Write Rute modyfikacja Timestamp-Ordering Protocol
zmieniono zasady umożliwienia zapisu do danych
reguły odczytu pozostały niezmienione
zwiększono współbieżność w stosunku do Timestamp-Based Protocol
Thomas’ Write Rute - Zapis Jeżeli TS(Ti) < R-timestamp(Q) – operacja
zapisu zostanie odrzucona i Ti będzie anulowana
Jeżeli TS() < W-timestamp(Q) – operacja zapisu zostanie zignorowana
W każdym innym przypadku operacja zapisu zostanie wykonana poprawnie
Validation-Based ProtocolPrzyjmuje się że każda transakcja Ti wykonuje dwie lub trzy różne fazy w zależności tylko odczytuje dane czy dokonuje ich aktualizacji
1. Faza czytania – odczytanie wartości danych i zapisanie do zmiennych lokalnych, wszystkie wyniki są przygotowywane na lokalnych zmiennych.
2. Faza walidacji - transakcja Ti przygotowuje test walidacji aby sprawdzić czy może przekopiować do bazy wartości zmiennych lokalnych , przechowujących rezultaty operacji zapisu
3. Faza pisania – jeżeli walidacja zakończy się sukcesem - zapisanie wyników od bazy, jeżeli nie – anulowanie Ti
Validation-Based Protocol
1. Start(Ti) – czas kiedy Ti rozpoczyna dzialanie2. Validation(Ti) – czas kiedy Ti kończy faze czytania i
rozpoczyna faze validacji3. Finish(Ti) – czas kiedy Ti kończy faze pisania
Z każdą transakcją powiązane są 3 znaczniki czasowe ( timestamp)
Validation testDla każdej transakcji Ti , takiej że TS(Ti) < TS(Tj) musi być spełniony jeden z warunków: Finish(Ti) < Start(Tj)
Start(Tj)< Finish(Ti) < Validation(Tj)
Multiple Granularity Pozwala na dane różnej wielkości – hierarchia
ziarnistości danych
Może być reprezentowany graficznie przez drzewo
Założenie blokady na węzeł powoduje domyślnie założenie blokad na wszystkich węzłach poniżej
Multiple Granularity - przykład
Intention Lock intention-shared(IS) intention-exclusive(IX) shared and intention- exclusive(SIX)
Tabela zgodności
Multiversion Schemes Każda operacja zapisu do Q powoduje utworzenie nowej
wersji Q.
Kiedy zostanie wywołana operacja odczytu system bazy danych wybierze jedną z wersji , która będzie odczytana
Transakcja która wykonuje operacje odczytu nigdy nie musi czekać
umożliwia to zwiększenie współbieżności
Multiversion Timestamp Ordering Z każdą transakcją Ti powiązany jest TS(Ti)Każda wersja Qt danej Q zawiera trzy pola:
1. Wartość zmiennej Qt 2. W-timestamp(Qt) – znacznik czasowy
transakcji która utworzyła wersje Qt 3. R-timestamp(Qt) – największy znacznik
transakcji jak odczytała wartość Qt
Multiversion Timestamp Ordering Jeżeli Ti wywoła read(Q) wtedy otrzyma
wartość jednej z wartość Qt
Jeżeli Ti wywoła write(Q) i TS(Ti) < R-timestamp(Qt) wtedy Ti zostanie anulowana.
Jeżeli Ti = W-timestamp(Qt) utworona zostanie nowa wersja Q
Multiversion Two-Phase Locking Różnice pomiędzy transakcjami
odczytującymi i aktualizującymi
Transakcje aktualizacji używają rigorous two-phase locking protocol
1. Każda operacja write(Q) powoduje utworzenie nowej wersji Q
2. Każda wersja Q posiada timestamp, którego wartość jest otrzymywana z ts_counter
Multiversion two-phase locking Jeżeli transakcja aktualizacji wywoła read(Q) –
zakłada blokadę współdzieloną na Q i odczytuje jej ostatnią wersje, jeżeli wywoła write(Q) – zakłada blokadę wyłączną , tworzy nową wersje Q i ustawia timestamp na nieskończoność
Jeżeli transakcja zostanie zaakceptowana:
1. timestamp wersji Q zostaje ustawiony na ts_counter + 12. ts_counter zostaje inkrementowany
Zaklaszczenia System jest zakleszczony jeżeli instnieje
zbiór transakcji takich , że każda transakcja czeka na inną transakcje
Obsługa zakleszczeń:
1. protokół zabezpieczający przed zakleszczeniami 2. można zezwolić na zakleszczenia i zastosować
mechanizmy deadlock-detection i deadlock-recovery.
Zapobieganie zakleszczeniom Wszystkie transakcje zakładały blokady zanim zaczną się
wykonywać
Zastosowanie częściowej kolejności dostępu do danych
Wait-die (czekaj albo gin)– starsza transakcja może czekać aż młodsza porzuci zasób, młodsza transakcja nigdy nie czeka – zostaje anulowana.Transakcja może zostać anulowana wiele razy zanim otrzyma zasób
Wound-wait (zran albo czekaj)– starsza transakcja wywłaszcza młodszą, zamiast czekać na zwolnienie zasobu przez młodszą. Młodsza może czekać na zwolnienie zasobu przez starszą.
Wykrywanie zakleszczeń Jeżeli system nie używa protokołu
zabezpieczającego przed zakleszczeniami to musi posiadać mechanizmy wykrywania zakleszczeń
Algorytm sprawdzający system jest wywoływany okresowo aby wykryć pojawiające się zakleszczenie
Jeżeli zostanie wykryte zakleszczenie zostaje uruchomiany mechanizm wychodzenia z zakleszczenia
Wykrywanie zakleszczeńZakleszczenie może być opisane przez wait-for graf G(V,E):
V – zbiór wszystkich transakcji w systemie E - zbiór uporządkowanych par Ti ->Tj System jest w zakleszczeniu wtedy i tylko
wtedy gdy w wait-for grafie są cykle
graf bez cykli–bez zakleszczeń
Graf z cyklami - zakleszczenia
Mechanizm wychodzenie z zakleszczenia Wybranie transakcji która ma zostać
anulowana
Anulowanie transakcji – anulowanie całej transakcji lub tylko tyle, ile jest konieczne aby wyjść z zakleszczenia
Należy unikać zagłodzenia – transakcja może zostać anulowana skończoną liczbę razy
Pytania:1. Co oznacza że blokady są zgodne.2. Kiedy transakcja może zamknąć blokade w
Lock-Based Protocols .3. Fazy The Two-Phase Locking Protocol.4. Modyfikacje The Two-Phase Locking Protocol.5. Porównanie Timestamp-Based Protocol z
Thomas’ Write Rute 6. Strategie zapobiegania zakleszczeniom
KONIEC