1 / 38

Zarządzanie transakcjami

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;

ima
Download Presentation

Zarządzanie transakcjami

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Zarządzanie transakcjami Wykład S. Kozielski

  2. 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;

  3. 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;

  4. 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.

  5. Serwer SZBD BD Aplikacja 2 Aplikacja 3 Aplikacja 1 stacja 2 stacja 3 stacja 1 Środowisko realizacji transakcji

  6. Harmonogram transakcji Uszeregowanie (kolejność wykonania) wszystkich operacji elementarnych pewnego zbioru transakcji realizowanych współbieżnie

  7. Problemy ze współbieżnym wykonaniem transakcjiWspółbieżny harmonogram dwóch transakcji rezerwacji miejsc

  8. (H1) Harmonogram szeregowy

  9. (H2) Harmonogram szeregowalny

  10. (H3) Harmonogram nieszeregowalny

  11. Mechanizm blokowania dostępu do danych LOCK <jednostka danych> UNLOCK <jednostka danych>

  12. 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.

  13. Ziarnistość (granulacja) blokowania <jednostka danych>: - wiersz (rekord), - cała tablica, - cała baza danych

  14. 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

  15. 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.

  16. Inny model blokowania RLOCK (read-lock) – blokowanie do odczytu (blokada współdzielona - shared), WLOCK (write-lock) – blokowanie do zapisu (blokada wyłączna - exclusive). UNLOCK

  17. 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.

  18. Serwer SZBD Menedżer Transakcji BD Log dziennik transakcji Aplikacja 2 Aplikacja 3 Aplikacja 1 stacja 2 stacja 3 stacja 1 Prowadzenie dziennika transakcji

  19. 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;

  20. Model z bezpośrednim zapisem do bazy danych <Ti, start> <Ti, Xadres, Xstara_wartość, Xnowa_wartość> <Ti, Yadres, Ystara_wartość, Ynowa_wartość> <Ti, commit>

  21. Stan dziennika po wycofaniu transakcji <Ti, start> <Ti, Xadres, Xstara_wartość, Xnowa_wartość> <Ti, rollback>

  22. Stan dziennika po awarii <Ti, start> <Ti, Xadres, Xstara_wartość, Xnowa_wartość>

  23. Model z opóźnionym zapisem do bazy danych <Ti, start> <Ti, Xadres, Xnowa_wartość> <Ti, Yadres, Ynowa_wartość> <Ti, commit>

  24. 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>

  25. 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)

  26. 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)

  27. 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ł)

  28. BACKUP BD Log

  29. BACKUP BD Log RESTORE BD

  30. BACKUP BD Log RESTORE ROLLFORWARD BD Odtworzenie spójnego stanu b.d. po awarii dysku

  31. 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>

  32. Poziomy izolacji

More Related