420 likes | 638 Views
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
E N D
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
Blokady Na 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.
Transakcja 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); Przykład
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
Transakcja 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); Przykład
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 conversions Upgrade – konwersja z blokady współdzielonej na wyłączną – tylko w growing phase Downgrade – 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 protocol Cechy Tree protocol • detabase graph jest drzewem • jedyną dozwoloną blokadą jest blokada wyłączna Algorytm Tree-Protocol • Pierwsza blokada może zostać założona na dowolnej danej • 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 • Dana może być odblokowane w dowolnym momencie • Dana na której była nałożona blokada przez transakcje nie może zostać ponownie zablokowana przez tą transakcję
Zalety: 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 Zalety i wady Tree protocol
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.
Timestamps Z 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 Tibędzie anulowana • Jeżeli TS(Ti) < W-timestamp(Q) - Tipróbuje zapisać przestarzałą wartość do Q, operacja zapisu zostanie odrzucona i Ti będzie anulowana • We wszystkichpozostał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 Protocol Przyjmuje sięże każda transakcja Ti wykonuje dwie lub trzy różne fazy w zależności tylko odczytuje dane czy dokonuje ich aktualizacji • Faza czytania – odczytanie wartości danych i zapisanie do zmiennych lokalnych, wszystkie wyniki są przygotowywane na lokalnych zmiennych. • Faza walidacji - transakcja Ti przygotowuje test walidacji aby sprawdzić czy może przekopiować do bazy wartości zmiennych lokalnych , przechowujących rezultaty operacji zapisu • Faza pisania – jeżeli walidacja zakończy się sukcesem - zapisanie wyników od bazy, jeżeli nie – anulowanie Ti
Validation-Based Protocol • Start(Ti) – czas kiedy Ti rozpoczyna dzialanie • Validation(Ti) – czas kiedy Ti kończy faze czytania i rozpoczyna faze validacji • Finish(Ti) – czas kiedy Ti kończy faze pisania Z każdą transakcją powiązane są 3 znaczniki czasowe ( timestamp)
Validation test Dla 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
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 trzypola: • Wartość zmiennej Qt • W-timestamp(Qt) – znacznik czasowy transakcji która utworzyła wersje Qt • 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 • Każda operacja write(Q) powoduje utworzenie nowej wersji Q • 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: • timestamp wersji Q zostaje ustawiony na ts_counter + 1 • 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ń: • protokół zabezpieczający przed zakleszczeniami • 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łuzabezpieczają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
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: • Co oznacza że blokady są zgodne. • Kiedy transakcja może zamknąć blokade w Lock-Based Protocols . • Fazy The Two-Phase Locking Protocol. • Modyfikacje The Two-Phase Locking Protocol. • Porównanie Timestamp-Based Protocol z Thomas’ Write Rute • Strategie zapobiegania zakleszczeniom