380 likes | 574 Views
Zarządzanie transakcjami. Wykład S. Kozielski. Zarz ą dzanie transakcjami. Transakcja – jedna lub wi ę cej operacji na bazie danych stanowi ą cych pewn ą logiczn ą ca ł o ść . Przyk ł ad transakcji: r ezerwacja miejsc R: begin znajd ź wolne miejsce m;
E N D
Zarządzanie transakcjami Wykład S. Kozielski
Zarządzanie transakcjami Transakcja – jedna lub więcej operacji na bazie danych stanowiących pewną logiczną całość. Przykład transakcji: rezerwacja miejsc R: begin znajdź wolne miejsce m; rezerwuj znalezione miejsce dla pasażera p end;
Przykład transakcji:przeniesienie kwoty K z konta X na konto Y T:begin read X; X:=X-K; write X; read Y; Y:=Y+K; write Y end;
Pożądane własności transakcji Atomowość – transakcja musi zostać wykonana w całości, albo wszystkie efekty jej częściowego wykonania muszą zostać wycofane Spójność – transakcja nie może naruszać więzów spójności Izolacja – transakcja musi działać w pełnej izolacji od innych transakcji. Trwałość – wynik zakończonej transakcji nie może zostać utracony.
Serwer SZBD BD Aplikacja 2 Aplikacja 3 Aplikacja 1 stacja 2 stacja 3 stacja 1 Środowisko realizacji transakcji
Harmonogram transakcji Uszeregowanie (kolejność wykonania) wszystkich operacji elementarnych pewnego zbioru transakcji realizowanych współbieżnie
Problemy ze współbieżnym wykonaniem transakcjiWspółbieżny harmonogram dwóch transakcji rezerwacji miejsc
Mechanizm blokowania dostępu do danych LOCK <jednostka danych> UNLOCK <jednostka danych>
Efekty wykonania LOCK X 1) sukces (udało się nałożyć blokadę) – transakcja uzyskuje prawo dostępu do jednostki X, 2) niepowodzenie (nie udało się nałożyć blokady) – brak prawa dostępu: - zawieszenie transakcji żądającej, lub - kontynuacja transakcji żądającej bez prawa dostępu do X.
Ziarnistość (granulacja) blokowania <jednostka danych>: - wiersz (rekord), - cała tablica, - cała baza danych
U: begin V: begin lock Y; lock X; read Y; read X; unlock Y; unlock X; lock X; lock Y; read X; read Y; X:=X+Y; Y:=Y+X; write X; write Y; unlock X unlock Yend; end; X0 =20, Y0 =30H1: U;V: X=50, Y=80H2: V;U: X=70, Y=50
Dwufazowy protokół blokowania Transakcja wypełnia protokół dwufazowy, jeśli wszystkie operacje blokowania występują przed pierwszą operacją odblokowania. Twierdzenie Dowolny harmonogram transakcji dwufazowych jest harmonogramem szeregowalnym.
Inny model blokowania RLOCK (read-lock) – blokowanie do odczytu (blokada współdzielona - shared), WLOCK (write-lock) – blokowanie do zapisu (blokada wyłączna - exclusive). UNLOCK
Wyróżnianie transakcji w programach 1) Domyślne każda instrukcja SQL jest transakcją, 2) Jawne: [BEGIN TRANSACTION] - początek, COMMIT [TRANSACTION]- koniec – zatwierdzenie transakcji, ROLLBACK [TRANSACTION] - koniec – wycofanie transakcji.
Serwer SZBD Menedżer Transakcji BD Log dziennik transakcji Aplikacja 2 Aplikacja 3 Aplikacja 1 stacja 2 stacja 3 stacja 1 Prowadzenie dziennika transakcji
T: begin begin transaction; find X; if not found then rollback else begin lock X; get X; X:=X-K; write X; find Y; if not found then rollback else begin lock Y; get Y; Y:=Y+K; write Y; commit end end end;
Model z bezpośrednim zapisem do bazy danych <Ti, start> <Ti, Xadres, Xstara_wartość, Xnowa_wartość> <Ti, Yadres, Ystara_wartość, Ynowa_wartość> <Ti, commit>
Stan dziennika po wycofaniu transakcji <Ti, start> <Ti, Xadres, Xstara_wartość, Xnowa_wartość> <Ti, rollback>
Stan dziennika po awarii <Ti, start> <Ti, Xadres, Xstara_wartość, Xnowa_wartość>
Model z opóźnionym zapisem do bazy danych <Ti, start> <Ti, Xadres, Xnowa_wartość> <Ti, Yadres, Ynowa_wartość> <Ti, commit>
Punkty kontrolne (CHECKPOINT) Wykonanie przerwania związanego z punktem kontrolnym: dokończenie aktualnych operacji na bazie danych i/lub logu przejście do obsługi przerwania Obsługa przerwania (obsługa punktu kontrolnego): zapis zawartości buforów na dysk (do bazy danych) wpis do dziennika transakcji (logu) rekordu <CHECKPOINT>
Punkty kontrolne - przykład Zawartość logu: <T1, start> <T2, start> <T3, start> <T2, commit> <CHECKPOINT> <T4, start> <T1, commit> <T5, start> <T4, commit> -----------awaria Transakcje zakończone (bezpieczne): T2 Transakcje wymagające powtórzenia: T1, T4 (REDO T1, T4) Transakcje wymagające wycofania: T3, T5 (UNDO T3, T5)
Algorytm odtwarzania spójnego stanu b. d. po awarii Wszystkie transakcje wypełnione przed ostatnim punktem kontrolnym uznawane są za zakończone Wszystkie transakcje wypełnione (COMMIT) pomiędzy ostatnim punktem kontrolnym a awarią są powtarzane (REDO) Wszystkie transakcje wykonywane do momentu awarii (brak COMMIT) są wycofywane (UNDO – ROLLBACK)
Wykorzystanie dziennika do ochrony bazy danych - podsumowanie 1) Wycofanie transakcji z poziomu programu (aplikacji), (niedostępność danych,...) 2) Wycofanie transakcji z poziomu SZBD, (zakleszczenie transakcji, zawieszenie transakcji, ...) 3) Odtworzenie spójnego stanu b.d. po awarii i upadku systemu 4) Odtworzenie b.d. i przywrócenie jej spójnego stanu po zniszczeniu dysku z bazą danych (dziennik ocalał)
BACKUP BD Log
BACKUP BD Log RESTORE BD
BACKUP BD Log RESTORE ROLLFORWARD BD Odtworzenie spójnego stanu b.d. po awarii dysku
Mechanizmy blokad w SQL-u – poziomy izolacji Generalna zasada: - zapis (modyfikacja) – wiersz (rekord) blokowany jest na wyłączność do końca transakcji, - odczyt – wybór rodzaju blokady i zakres utrzymywania zależy od poziomu izolacji. Poziom izolacji może ustalać programista: SET TRANSACTION ISOLATION LEVEL <poziom izolacji>