UPDATE konta /* dodaj do konta B kwotę N */ UPDATE konta /* odejmij kwotę N z konta A */ WHERE id_konta = B; SET stan = stan + N

Podobne dokumenty
Transakcja jest sekwencją logicznie powiązanych operacji na bazie danych, która przeprowadza bazę danych z jednego stanu spójnego w inny stan spójny

Algorytmy zarządzania współbieżnym wykonywaniem transakcji część I

Wielowersyjne metody synchronizacji transakcji

Plan wykładu. Przykład. Wprowadzenie BAZY DANYCH. Transakcje Hurtownie danych

Zarządzanie transakcjami

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

Wprowadzenie (1) Przetwarzanie transakcyjne. Wprowadzenie (2) Problemy przygotowania aplikacji

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA. Przetwarzanie transakcyjne

przykłady problemów; realizacja dostaw części od producenta do klienta:

Bazy danych. Andrzej Łachwa, UJ, /15

070 TRANSAKCJE. Prof. dr hab. Marek Wisła

Algorytmy zarządzania współbieżnym wykonywaniem transakcji część II

Wykłady z przedmiotu Podstawy baz danych Transakcje dr hab. prof. nadzw. Tadeusz Antczak. Transakcje

Bazy danych wykład dziewiaty Transakcje. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

I. Techniki wielowersyjne sterowania współbieżnością

PODSTAWY BAZ DANYCH Wykład 9

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Wykłady z przedmiotu Podstawy baz danych Transakcje dr hab. prof. UŁ. Tadeusz Antczak. Transakcje

Wykłady z przedmiotu Podstawy baz danych Transakcje dr hab. prof. nadzw. Tadeusz Antczak. Transakcje

PODSTAWY BAZ DANYCH. 11. Transakcje. 2009/ Notatki do wykładu "Podstawy baz danych"

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1

Tadeusz Pankowski

Właściwości transakcji

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych w sterowaniu

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Bazy danych 2. Wykład 6 Transakcje

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy

Podstawy teoretyczne baz danych. Recovery Transakcyjne odtwarzanie bazy danych po awarii

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

Cel odtwarzania. Transakcyjne odtwarzanie bazy danych. Modele awarii. Efektywność odtwarzania MTTF

Plan ćwiczenia. Rozdział 17. zarządzania współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

Tadeusz Pankowski

Pliki. Operacje na plikach w Pascalu

Bazy danych. Plan wykładu. Czynniki wpływające na fizyczny projekt bazy danych. bazy danych

:11 BD_1_W9

Przechowywanie danych

PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych

Bazy danych 9. SQL Klucze obce Transakcje

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

12. Które z harmonogramów transakcji są szeregowalne? a) (a1) (a2) (a3) (a4) b) (b1) (b2) (b3) (b4) c) (c1) (c2) (c3) (c4) d) (d1) (d2) (d3) (d4)

Bazy danych 6a. Transakcje. P. F. Góra

Plan ćwiczenia. Rozdział 17 Zarządzanie współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

Dazy Banych. Michał Rusnarczyk

Inżynieria oprogramowania. Faza implmentacji. wykład 7

Systemy operacyjne. wykład 11- Zakleszczenia. dr Marcin Ziółkowski. Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Recovery Transakcyjne odtwarzanie bazy danych po awarii

Rozproszone i obiektowe systemy baz danych

Transakcje jednocześnie ACID

Bazy danych Transakcje

TECHNIKI STEROWANIA WSPÓŁBIEŻNOŚCIĄ. I. Wybrane problemy współbieżności. Utracona aktualizacja (lost update)

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Pojęcie bazy danych. Funkcje i możliwości.

Tadeusz Pankowski

Administracja i programowanie pod Microsoft SQL Server 2000

Izolacje transakcji oraz anomalie. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

UNIKANIE IMPASÓW W SYSTEMACH PROCESÓW WSPÓŁBIEŻNYCH

Bazy danych 9. Klucze obce Transakcje

Lock Manager Deadlock Źródła Jak starczy czasu. Dreadlocks. Konrad Błachnio MIMUW 19 maja 2010

Sortowanie topologiczne skierowanych grafów acyklicznych

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Transakcje Wykład z bazy danych dla studen

Złożona struktura transakcji

Rozdział 17. Zarządzanie współbieżnością zadania

Kopie zapasowe w SQL Server. Michał Bleja

System plików. Warstwowy model systemu plików

Multiprocessor Shared-Memory Information Exchange. Damian Klata, Adam Bułak

Bazy danych. Zasady konstrukcji baz danych

Przykładowe rozwiązania

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

4. Procesy pojęcia podstawowe

Ćwiczenie 9 współbieŝność

TESTU NIE MUSZA BYC W 100% POPRAWNE!!!

Poprawność semantyczna

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Przykładowe B+ drzewo

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Algorytmy Równoległe i Rozproszone Część VI - Systemy rozproszone, podstawowe pojęcia

Informatyka (7-8) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Problem zakleszczenia

Synchronizacja procesów i wątków

Przyczyny awarii. Struktury wykorzystywane do odtwarzania bd. Archiwizowanie plików dziennika. Archiwizowanie danych. danych

Zadanie 1. Suma silni (11 pkt)

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

Wprowadzenie do programowania współbieżnego

Rozproszone bazy danych 2

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Systemy operacyjne III

4. Procesy pojęcia podstawowe

Podstawy Informatyki. Metody dostępu do danych

Transkrypt:

Definicja transakcji Transakcja jest sekwencją logicznie powiązanych operacji na bazie danych, która przeprowadza bazę danych z jednego stanu spójnego w inny stan spójny Stan spójny bazy danych Stan spójny bazy danych S 1 Transakcja S 2 t1 t2 Czas Systemy baz danych - Zbyszko Królikowski Transakcja Operacje dostępu do danych, które może zawierać transakcja są następujące: read(x) czyta daną jednostkową X pamiętaną w bazie danych i podstawia ją pod zmienną w programie write(x) zapisuje wartość zmiennej X programu do jednostki danych X w bazie danych Wykonanie polecenia read (X) składa się z następujących kroków: Znajdź adres bloku dyskowego, który zawiera jednostkę X; Przekopiuj zawartość tego bloku do bufora w pamięci głównej (jeśli ten blok się tam jeszcze nie znajduje); Przekopiuj jednostkę X z bufora do zmiennej programowej X. Systemy baz danych - Zbyszko Królikowski 149 151 Pojęcia podstawowe Stan spójny bazy danych to stan w którym wszystkie ograniczenia integralności wynikające ze schematu bazy danych oraz inne ograniczenia są spełnione. Przykład 1: Transakcja przelewu kwoty N z konta A na konto B begin end UPDATE konta /* odejmij kwotę N z konta A */ SET stan = stan N WHERE id_konta = A; UPDATE konta /* dodaj do konta B kwotę N */ SET stan = stan + N WHERE id_konta = B; COMMIT; Systemy baz danych - Zbyszko Królikowski 150 Transakcja cd. Wykonanie polecenia write (X) składa się z następujących kroków: Znajdź adres bloku dyskowego, który zawiera jednostkę X; Przekopiuj zawartość tego bloku do bufora w pamięci głównej (jeśli ten blok się tam jeszcze nie znajduje); Przepisz jednostkę X ze zmiennej programowej X do właściwej lokalizacji w buforze; Zapisz na dysk uaktualniony blok z bufora (albo w trybie natychmiastowym albo z opóźnieniem) Przykład 1: T1: read(x); T2: read(x); X := X - N; X := X + M; write(x); write(x); read(y); Y := Y + N; write(y); Systemy baz danych - Zbyszko Królikowski 152

Problem Współbieżne wykonywanie transakcji (w systemie wielozadaniowym z podziałem czasu procesora) może być przyczyną niespójności bazy danych Dlaczego zarządzanie współbieżnością (synchronizacja) transakcji jest konieczne? Przykład 2: Baza danych systemu rezerwacji lotniczej Transakcje T1 i T2 z Przykładu 1 są wykonywane współbieżnie w tym samym przedziale czasu i zakładamy, że ich operacje zostały rozdzielone w wyniku zastosowania algorytmu RR przydziału procesora Systemy baz danych - Zbyszko Królikowski 153 The Lost Update Problem: T1: T2: read(x); X := X - N; time read(x); X := X + M; write(x); read(y); write(x); Y := Y + N; write(y); Czy wartość X jest poprawna? Sprawdź dla X = 80, N = 5, M = 4. Systemy baz danych - Zbyszko Królikowski 155 Systemy baz danych - Zbyszko Królikowski 154 The Temporary Update (Dirty Read) Problem: Jedna z transakcji aktualizuje stan bazy danych poczym pojawia się błąd w jej wykonaniu (ang. fails) T1: T2: read(x); X := X - N; time write(x); read(x); X := X + M; write(x); dirty data read(y); Błąd w wykonaniu T1 i wartość X musi być zmieniona na poprzednią starą wartość, a w tym czasie T2 przeczytała tymczasową niepoprawną wartość X Systemy baz danych - Zbyszko Królikowski 156

The Incorrect Summary Problem (Odczyt niepowtarzalny): Jeśli jedna transakcja oblicza funkcję agregującą (sumującą) na pewnej liczbie rekordów, podczas gdy inna transakcja wykonuje operacje aktualizacji tych samych rekordów, to funkcja sumująca może obliczyć pewne wartości zanim zostaną one uaktualnione a inne po ich aktualizacji read(x); X := X - N; write(x); T1: T3: read(y); Y := Y + N; write(y); sum := 0; read(a); sum := sum + A; read(x); sum := sum + X; read(y); sum := sum + Y; Błąd Systemy baz danych - Zbyszko Królikowski 157 Dlaczego konieczne jest odtwarzanie stanu bazy danych sprzed awarii (ang. recovery)? Gdy transakcja jest zgłaszana do systemu, to SZBD jest odpowiedzialny za to aby: Wszystkie operacje transakcji zakończyły się sukcesem i ich wyniki zostały na stałe zapisane w bazie danych, lub Transakcja nie miała wpływu na bazę danych lub inne transakcje SZBD nie może dopuścić aby pewne operacje transakcji na bazie danych zostały wykonane a inne nie. Taka sytuacja może się zdarzyć przy awarii systemu. Wnioski wynikające między innymi z przykładów przedstawionych wcześniej!!! Systemy baz danych - Zbyszko Królikowski 159 Systemy baz danych - Zbyszko Królikowski 158 Typy awarii 1. Załamanie się systemu wystąpił błąd programowy lub sprzętowy podczas wykonywania transakcji 2. Błąd transakcji lub błąd systemowy pewne operacje transakcji mogą powodować błąd systemowy (np. dzielenie przez 0) lub wykonanie transakcji zostaje przerwane (np. kill) 3. Błąd lokalny wykryty przez transakcję podczas wykonywania transakcji wystąpiły pewne warunki, które muszą powodować jej wycofanie 4. Egzekwowanie reguł synchronizacyjnych odpowiedni moduł SZBD może zdecydować o usunięciu transakcji i jej późniejszym restartowaniu 5. Błąd odczytu/zapisu z dysku Aby było możliwe odtworzenie stanu bazy danych sprzed awarii, w przypadku wystąpienia błędów 1-4, odpowiednie moduły SZBD muszą utrzymywać określone informacje Systemy baz danych - Zbyszko Królikowski 160

Koncepcja transakcji: Klasyfikacja Transakcje zapytaniowe (read only) Transakcje aktualizujące (read, write) Transakcja jest atomową jednostką pracy systemu, która może albo być wykonana w całości, albo nie wykonana w ogóle. Podstawowe operacje składowe transakcji Begin_transaction Read / Write End_transaction Commit Rollback (Abort) Systemy baz danych - Zbyszko Królikowski Przykład 3 UPDATE Pracownicy Begin_transaction; SET płaca = 1.15 x płaca read (A); WHERE staż >5... COMMIT; write (A); Commit; Dodatkowe operacje składowe transakcji UNDO REDO Konieczne w przypadku niektórych mechanizmów odtwarzania po awarii Systemy baz danych - Zbyszko Królikowski 161 163 Podstawowe operacje składowe transakcji - komentarz Systemy baz danych - Zbyszko Królikowski 162 Diagram stanów transakcji Begin transaction ACTIVE Read / Write End_transaction PARTIALLY COMMITTED Commit COMMITTED Abort Abort FAILED TERMINATED Systemy baz danych - Zbyszko Królikowski 164

Diagram stanów transakcji - komentarz Systemy baz danych - Zbyszko Królikowski 165 Zatwierdzenie transakcji Transakcja T osiąga punkt zatwierdzenia (ang. commit point) gdy jej wszystkie operacje, które wykonywały operacje dostępu do bazy danych kończą się sukcesem i efekt jej działania jest na stałe zapamiętany w bazie danych oraz odnotowywany w dzienniku systemowym transakcja zapisuje wówczas w logu [commit, T] Problemy Awaria systemu: Które transakcje powinny być wycofane? Obsługa dziennika systemowego problem zapisu na dysk kolejnych porcji logu po ich aktualizacji w pamięci buforowej: egzekwowanie zapisu jeszcze przed zatwierdzeniem transakcji (ang. force writing) Systemy baz danych - Zbyszko Królikowski 167 Dziennik systemowy The System Log Cel: możliwość odtworzenia stanu bazy danych sprzed wystąpienia błędu transakcji Jak: śledzenie wszystkich operacji transakcji, które wpływają na dane w bazie Gdzie: log jest utrzymywany na dysku tylko awaria dysku uniemożliwia odtworzenie stanu systemu sprzed awarii Zawartość Log: (T jest to unikalny identyfikator transakcji nadawany przez system) 1. [start_transaction, T] 2. [write, T, X, old_value, new_value] 3. [read, T, X] 4. [commit, T] 5. [abort, T] Systemy baz danych - Zbyszko Królikowski Punkty kontrolne w dzienniku systemowym Checkpoints in the System Log Punkty kontrolne specjalny rodzaj zapisu w logu Rekord zawierający punkt kontrolny jest zapisywany w logu okresowo i wiąże się z zapisywaniem na dysku efektów wszystkich operacji write zatwierdzonych transakcji Interwały czasowe pomiędzy punktami kontrolnymi określa administrator SZBD W punkcie kontrolnym podejmowane są następujące akcje: 1. Czasowe zawieszenie wykonywanych transakcji 2. Wymuszenie zapisu wszystkich operacji aktualizacyjnych z buforów w pamięci operacyjnej na dysk 3. Zapisanie w logu rekordu [checkpoint] i wymuszenie zapisu logu na dysk 4. Restartowanie transakcji Systemy baz danych - Zbyszko Królikowski 166 168

Własności ACID transakcji Każda transakcja musi posiadać cztery własności: Atomicity (Atomowość) zbiór operacji wchodzących w skład transakcji jest niepodzielny; albo zostaną wykonane wszystkie operacje transakcji albo żadna Consistency (Spójność) poprawne wykonanie transakcji przeprowadza bazę danych z jednego stanu spójnego do innego stanu spójnego Isolation (Izolacja) transakcje są od siebie logicznie odseparowane; mogą wzajemnie oddziaływać na siebie ale tylko w taki sposób jak gdyby były wykonywanie sekwencyjnie Durability (Trwałość) wyniki zatwierdzonych transakcji nie mogą zostać utracone, niezależnie od awarii systemu Systemy baz danych - Zbyszko Królikowski 169 Uszeregowanie transakcji Sposób wykonania operacji z różnych transakcji wykonywanych w systemie wielozadaniowym formuje tzw. uszeregowanie (realizację) (uporządkowanie, historię) transakcji Realizacja S transakcji T1,..., Tn jest pewnym uporządkowaniem operacji transakcji, przy czym dla każdej Ti, która uczestniczy w S, jej operacje w S muszą występować w takim porządku w jakim występują w Ti. Operacje transakcji Tj mogą być przeplecione z operacjami transakcji Ti z realizacji S Będziemy dalej rozważać następujące operacje: read r write w commit c abort a Systemy baz danych - Zbyszko Królikowski 171 Własności ACID transakcji Jakie moduły SZBD odpowiadają za egzekwowanie własności ACID? Systemy baz danych - Zbyszko Królikowski 170 Uszeregowanie transakcji Przykład 4 T1: T2: read(x); X := X - N; time read(x); X := X + M; write(x); read(y); write(x); Y := Y + N; write(y); Realizacja Sa: r1(x); r2(x); w1(x); r1(y); w2(x); c2; w1(y); c1; Systemy baz danych - Zbyszko Królikowski 172

Uszeregowanie transakcji Przykład 4 cd. T1: T2: read(x); X := X - N; Time write(x); read(x); X := X + M; write(x); read(y); Realizacja Sb: r1(x); w1(x); r2(x); w2(x); c2; r1(y); a1; (Przy założeniu, że T1 będzie wycofana po wykonaniu read(y) Systemy baz danych - Zbyszko Królikowski 173 Uszeregowanie transakcji Wszystkie transakcje w S muszą zawierać commit lub abort, tak więc kompletna realizacja nie dotyczy transakcji aktywnych Realizacja zawierająca tylko operacje zatwierdzonych transakcji jest nazywana zaakceptowaną projekcją C(S) realizacji S Realizacja S jest odtwarzalna (ang. recoverable) jeśli żadna transakcja T w S nie wykonuje operacji commit, dopóki wszystkie transakcje T, które wykonują operację zapisu danych, które transakcja T odczytuje, nie zostaną zatwierdzone (wykonają commit). Transakcja T czyta z transakcji T, jeśli pewna dana X jest najpierw zapisywana przez T a dopiero później czytana przez transakcję T. Czy realizacja Sa z przykładu 4 jest odtwarzalna? Systemy baz danych - Zbyszko Królikowski 175 Uszeregowanie transakcji Dwie operacje w realizacji S są konfliktowe jeśli należą do różnych transakcji oraz wykonują operacje dostępu do tej samej danej X i jedną z tych operacji jest operacja zapisu (write) Dwie transakcje Ti i Tj są konfliktowe jeżeli zawierają wzajemnie konfliktowe operacje Które operacje w realizacjach Sa i Sb są konfliktowe? Realizacja S transakcji T1,..., Tn jest kompletna (ang. complete schedule) jeśli spełnia następujące warunki: 1. Operacje w S są to te same operacje co występujące w T1,..., Tn; 2. Dla każdej pary operacji w Ti ich uporządkowanie w S jest takie samo jak Ti; 3. Dla każdych dwóch konfliktowych operacji, określone jest ich uporządkowanie. Systemy baz danych - Zbyszko Królikowski 174 Uszeregowanie transakcji Realizacje odtwarzalne cd. Czy realizacja Sc i Sd są odtwarzalne? Sc: r1(x); w1(x); r2(x); r1(y); w2(x); c2; a1; Sd: r1(x); w1(x); r2(x); r1(y); w2(x); w1(y); c1; c2; W realizacji odtwarzalnej nie zatwierdzone transakcje nie muszą być wycofywane Systemy baz danych - Zbyszko Królikowski 176

Uszeregowanie transakcji Sytuacje wyjątkowe kaskadowe wycofywanie (ang. cascading rollback) Nie zatwierdzone transakcje muszą być wycofane ponieważ czytały dane z transakcji, które padły Se: r1(x); w1(x); r2(x); r1(y); w2(x); w1(x); a1; Kaskadowe wycofywanie może być bardzo czasochłonne Realizacja jest nazywana unikającą kaskadowego wycofywania, jeśli wszystkie transakcje tylko czytają dane, które były pisane przez zatwierdzone transakcje Jak należałoby zmodyfikować realizację Se aby powyższe kryterium było spełnione? Systemy baz danych - Zbyszko Królikowski 177 Uszeregowalność realizacji transakcji T1 i T2 są wykonywane w trybie przeplatanym T1 T2 T1 T2 read(x); read(x); X := X N; X := X N; read(x); write(x) X := X + M read(x); write(x) X := X + M read(y); write(x) write(x) read(y); Y := Y + N Y := Y + N write(y) write(y) Realizacja C Realizacja D Systemy baz danych - Zbyszko Królikowski 179 Uszeregowalność realizacji (ang. Serializability of Schedules) T1 i T2 zgłoszone w tym samym czasie, wykonywane sekwencyjnie T1 T2 T1 T2 read(x); read(x); X := X N; X := X + M write(x) write(x) read(y); read(x); Y := Y + N X := X N; write(y) write(x) read(x); read(y); X := X + M Y := Y + N write(x) write(y) Realizacja A Realizacja B Systemy baz danych - Zbyszko Królikowski 178 Teoria uszeregowalności transakcji Cel: określenie, która realizacja transakcji jest poprawna oraz podanie technik, które dopuszczają tylko realizacje poprawne Realizacje A i B są to realizacje sekwencyjne, natomiast C i D współbieżne Jeżeli transakcje są niezależne, to wszystkie realizacje sekwencyjne są poprawne (ACID) Przykład: rozważmy realizacje A, B, C i D, przy założeniu, że X = 90 i Y = 90 Jaki wynik dają realizacje C i D? Czy są to wyniki poprawne? Dlaczego? Systemy baz danych - Zbyszko Królikowski 180

Teoria uszeregowalności transakcji Zadanie: określenie, które realizacje współbieżne zawsze dają wynik poprawny, a które nie. Realizacja S zbioru n transakcji jest poprawna jeżeli jest ona równoważna jakieś sekwencyjnej realizacji tego zbioru transakcji realizację taką nazywamy realizacją uszeregowalną Podział realizacji współbieżnych: 1. Realizacje równoważne jednej (lub więcej) realizacji sekwencyjnej i w konsekwencji uszeregowalne 2. Realizacje nie równoważne żadnej realizacji sekwencyjnej i w konsekwencji nieuszeregowalne Systemy baz danych - Zbyszko Królikowski 181 Teoria uszeregowalności transakcji Wniosek: Równoważność stanowa nie jest wystarczająca A więc co? Równoważność konfliktowa Dwie realizacje są konfliktowo równoważne jeśli porządek każdej pary konfliktowych operacji w obu realizacjach jest taki sam. A dokładniej? Mówimy, że dwie realizacje S1 i S2 są konfliktowo równoważne, jeżeli dla każdej pary konfliktowych operacji w realizacji S1, takich, że operacjai (X) operacjaj (X) (operacjai (X) poprzedza operacjaj (X)), zachodzi również operacja i (X) operacja j (X) w realizacji S2. Systemy baz danych - Zbyszko Królikowski 183 Teoria uszeregowalności transakcji Co to znaczy, że realizacje są równoważne? Pojęcie stanu i obrazu bazy danych 1. Stan bazy danych zbiór wartości wszystkich danych w bazie danych 2. Obraz bazy danych widziany przez transakcję Ti jest zbiorem wartości odczytywanych przez nią danych Dwie realizacji S1 i S2 są stanowo równoważne jeżeli dla dowolnego początkowego stanu bazy danych, stan bazy danych po wykonaniu realizacji S1 jest identyczny ze stanem po wykonaniu tego zbioru transakcji zgodnie z realizacją S2. Czy realizacje S1 i S2 są stanowo równoważne (sprawdź dla X = 100 i innych wartości) S1 S2 read(x); read(x); X := X + 10; X := X * 1.1; write(x); write(x); Systemy baz danych - Zbyszko Królikowski 182 Teoria uszeregowalności transakcji Równoważność konfliktowa cd. Jeśli dwie konfliktowe operacje występują w różnym porządku w dwóch różnych realizacjach, to efekt tych realizacji może być różny dla transakcji lub stanu końcowego bazy danych. Przykład: Sa: r1(x), w2(x); Sb: w2(x), r1(x); Czy wartość odczytana przez r1(x) w obu realizacjach będzie taka sama? Systemy baz danych - Zbyszko Królikowski 184

Teoria uszeregowalności transakcji Realizacja S jest konfliktowo uszeregowalna, jeśli jest równoważna do pewnej sekwencyjnej realizacji S Możemy zmieniać uporządkowanie nie konfliktowych operacji w S aż otrzymamy równoważną realizację sekwencyjną S. Przykład: Czy realizacja D jest konfliktowo równoważna realizacji A? Dlaczego? Czy realizacja C jest konfliktowo równoważna realizacji A lub B? Dlaczego? Systemy baz danych - Zbyszko Królikowski 185 Testing for conflict serializability of a schedule (2) Algorytm testowania uszeregowalności konfliktowej realizacji S (1) dla każdej Tj w S utwórz wierzchołek z etykietą Tj w grafie uszeregowalności (2) dla każdego przypadku w S gdy Tj wykonuje read(x) po write(x), wykonywanej przez Ti, utwórz krawędź (Ti Tj) (3) dla każdego przypadku w S gdy Tj wykonuje write(x) po read(x), wykonywanej przez Ti, utwórz krawędź (Ti Tj) (4) dla każdego przypadku w S gdy Tj wykonuje write(x) po write(x), wykonywanej przez Ti, utwórz krawędź (Ti Tj) (5) realizacja S jest uszeregowalna wtedy i tylko wtedy jeśli graf uszeregowalności nie zawiera cykli. Krawędź Ti Tj (od Ti do Tj) oznacza, że transakcja Ti musi wystąpić przed transakcją Tj w dowolnej realizacji sekwencyjnej, która jest równoważna S, ponieważ dwie konfliktowe operacje występują w realizacji w takim właśnie porządku. Systemy baz danych - Zbyszko Królikowski 187 Testing for conflict serializability of a schedule (1) Graf uszeregowalności Graf skierowany G = (N,E) - składa się ze zbioru wierzchołków N={T1...Tn} i zbioru skierowanych krawędzi E = {e1...em}. Każdej transakcji odpowiada jeden wierzchołek; każda krawędź ei ma postać (Tj Tk), 1 j n, 1 k n. Mówimy, że transakcja Tj poprzedza Tk w realizacji S, co zapisujemy Tj Tk, jeżeli zawierają odpowiednie operacje konfliktowe, między którymi zachodzi związek poprzedzania Tj jest wierzchołkiem początkowym, a Tk końcowym dla krawędzi ei, takiej, że jedna z operacji w Tj występuje w realizacji S przed pewną operacją konfliktową w Tk. Cyklem w grafie skierowanym jest sekwencja krawędzi C = (Tj Tk), (Tk Tp),...,(Ti Tj). Systemy baz danych - Zbyszko Królikowski 186 Testing for conflict serializability of a schedule (3) Jeśli w grafie nie ma cykli, można utworzyć sekwencyjną realizację S równoważną realizacji S, przez uporządkowanie transakcji z S w następujący sposób: dla każdej krawędzi Ti Tj, Ti musi występować przed Tj w równoważnej realizacji sekwencyjnej S. Grafy uszeregowalności dla realizacji A, B, C i D T T 1 2 X T T 1 2 X Graf uszeregowalności dla realizacji A Graf uszeregowalności dla realizacji B X T T 1 2 X T T 1 2 X Graf uszeregowalności dla realizacji C (nieuszeregowalny) Graf uszeregowalności dla realizacji D (uszeregowalny, równoważny realizacji A) Systemy baz danych - Zbyszko Królikowski 188

Testing for conflict serializability of a schedule (4) Przykład 5 Transaction T1 Transaction T2 Transaction T3 read (X); write (X); read (Z); read (X); write (X); read (Z); write (Z); Systemy baz danych - Zbyszko Królikowski Testing for conflict serializability of a schedule (6) Realizacja F Transaction T1 Transaction T2 Transaction T3 time read (X); write (X); read (Z); read (X); write (X); read (Z); write (Z); Systemy baz danych - Zbyszko Królikowski 189 191 Testing for conflict serializability of a schedule (5) Realizacja E Transaction T1 Transaction T2 Transaction T3 time read (X); write (X); read (Z); read (X); read (Z); write (Z); write (X) Systemy baz danych - Zbyszko Królikowski 190 Testing for conflict serializability of a schedule (7) Realizacja E jest nieuszeregowalna, ponieważ odpowiadający jej graf zawiera cykle, natomiast F jest uszeregowalna do sekwencji T3 T1 T2. Y T T 1 2 X Equivalent serial schedules none Reason: Y Y,Z T 3 cycle X(T1 - T2), Y(T2 - T1) cycle X(T1 - T2), YZ(T2 - T3), Y(T3 - T1) Graf dla realizacji E X,Y T 1 T 2 T 1 T 2 Y Y,Z T 3 T 3 Graf dla realizacji F Equivalent serial schedules: T3 - T1 - T2 Equivalent serial schedules: T3 - T1 - T2 T3 - T2 - T1 Systemy baz danych - Zbyszko Królikowski 192

Testing for conflict serializability of a schedule (8) Sekwencja: T3 T1 T2 T1 T2 T3 read (X); write (X); read (Z); read (X); write (X); read (Z); write (Z); Systemy baz danych - Zbyszko Królikowski 193 Algorytmy synchronizacji współbieżnych transakcji (1) Algorytmy synchronizacji współbieżnych transakcji a kryterium uszeregowalności transakcji. 1. algorytmy blokowania dostępu do danych - uszeregowanie transakcji wynika z kolejności uzyskiwanych blokad algorytm blokowania dwufazowego (2PL) 2. algorytmy znaczników czasowych - uszeregowanie transakcji wynika z wartości znaczników czasowych związanych z transakcjami 3. algorytmy optymistyczne - walidacja poprawności uszeregowania Systemy baz danych - Zbyszko Królikowski 195 Wykorzystanie uszeregowalności Stwierdzenie, że realizacja S jest konfliktowo uszeregowalna, tzn. S jest konfliktowo równoważne do realizacji sekwencyjnej, jest równoznaczne ze stwierdzeniem, że S jest realizacją poprawną. W praktyce: Ze względu na przeplatane wykonywanie transakcji jest niemożliwe określenie jak w realizacji operacje powinny być uporządkowane, aby zagwarantować uszeregowalność. Transakcje są zgłaszane do systemu w sposób ciągły i nie można określić końca realizacji - teoria uszeregowalności ma zastosowanie tylko dla zatwierdzonych projekcji S. Istnieje jednak szereg metod zarządzania współbieżnością transakcji (synchronizacji transakcji), które gwarantują uszeregowalność Systemy baz danych - Zbyszko Królikowski 194 Algorytmy synchronizacji współbieżnych transakcji (2) Blokada (lock) jest zmienną skojarzoną z jednostką danych w bazie danych, określającą jej status (dostępna/niedostępna) w kontekście operacji, które na tej jednostce danych mogą być wykonane. Blokady binarne: 2 stany: locked/unlocked (1/0), z każdą jednostką danych jest związana inna blokada, jeśli blokada danej X jest równa 1, to dana X jest niedostępna dla operacji transakcji, w przypadku blokad binarnych do transakcji muszą być włączone 2 dodatkowe operacje lock i unlock, transakcja żąda dostępu do danej X wydając operację lock(x), jeśli lock(x)=1 transakcja musi czekać, w przeciwnym wypadku transakcja wykonuje lock(x) := 1 i uzyskuje dostęp do danej X, po zakończeniu operacji na danej transakcja musi wykonać operację unlock(x), ustawiając zmienną blokady lock(x) = 0, a więc X jest dostępne teraz dla innych transakcji. Blokady binarne są najprostszą formą realizacji wzajemnego wykluczania. Systemy baz danych - Zbyszko Królikowski 196

Algorytmy synchronizacji współbieżnych transakcji (3) lock(x): B: if lock(x)=0 (*item is unlocked*) then lock(x):=1 (*lock the item*) else begin wait (until lock(x)=0 and the lock manager wakeups transaction); go to B end; Unlock(X): lock(x):=0 (*unlock the item*) if any transactions are waiting then wakeup one of the waiting transactions; Systemy baz danych - Zbyszko Królikowski Algorytmy synchronizacji współbieżnych transakcji (5) Shared and Exclusive lock Blokady wielokrotne (multiple-mode lock) wraz z trzema operacjami: read_lock(x), write_lock(x) i unlock(x) Zmienna blokady lock(x) może przyjmować 3 wartości: read_locked, write_locked, unlocked read_locked jest blokadą współdzieloną, ponieważ inne transakcje też mogą wykonywać operacje odczytu na danej X write_locked jest blokadą na wyłączność (exclusive), ponieważ tylko jedna transakcja może utrzymywać taką blokadę Każda blokada może być opisana rekordem składającym się z 3 pól: <data_item, lock, no_of_reads> Systemy baz danych - Zbyszko Królikowski 197 199 Algorytmy synchronizacji współbieżnych transakcji (4) SZBD zawiera moduł zarządzania blokadami i kontroli dostępu do blokad. W przypadku blokad binarnych do zarządzania współbieżnością realizacji transakcji stosuje się następujące reguły. 1. T musi wykonać lock(x) przed wykonaniem read(x) lub write(x) 2. T musi wykonać unlock(x) po wykonaniu wszystkich operacji zapisu i odczytu 3. T nie może wydać lock(x), jeśli już posiada blokadę X Mówimy, że pomiędzy operacjami lock(x) i unlock(x) transakcja utrzymuje blokadę X (hold the lock). Co najwyżej 1 transakcja może utrzymywać blokadę na określonej danej. Informacje o blokadach są utrzymywane w tablicy blokad (lock table): < data_item, lock> Systemy baz danych - Zbyszko Królikowski 198 Algorytmy synchronizacji współbieżnych transakcji (6) read_lock(x): B: if lock (X) = unlocked then begin lock (X) read_locked ; no_of_reads(x) 1 end else if lock(x) = read_locked then no_of_reads(x) no_of_reads(x)+1 else begin wait (until lock(x)= unlocked and the lock manager wakes up the transaction); go to B end; write_lock (X): B: if lock (X) = unlocked then lock (X) write_locked else begin wait (until lock(x) = unlocked and the lock manager wakes up the transaction); go to B end; Systemy baz danych - Zbyszko Królikowski 200

Algorytmy synchronizacji współbieżnych transakcji (7) unlock_item (X): if lock (X) = write_locked then begin lock (X) unlocked; wakeup one of the waiting transactions, if any end else if lock(x) = read_locked then begin no_of_reads(x) no_of_reads(x) - 1; if no_of_reads(x) = 0 then begin lock (X) = unlocked ; wakeup one of the waiting transactions, if any end end; Systemy baz danych - Zbyszko Królikowski Algorytmy synchronizacji współbieżnych transakcji (9) Dwie blokady są zgodne (ang. compatible), jeżeli mogą być jednocześnie założone na tą samą daną przez dwie różne transakcje w przeciwnym razie mówimy o blokadach niezgodnych Tabela zgodności blokad dla klasycznej metody blokowania blokada blokada żądana ustawiona S X S true false X false false Systemy baz danych - Zbyszko Królikowski 201 203 Algorytmy synchronizacji współbieżnych transakcji (8) Z wykorzystaniem blokad wielokrotnych system musi gwarantować egzekwowanie następujących reguł: 1. T musi wydać read_lock(x) lub write_lock(x) przed wykonaniem read(x) 2. T musi wydać write_lock(x) przed wykonaniem write(x) 3. T musi wydać unlock(x) po wykonaniu wszystkich operacji read(x) i write(x) 4. T nie może wydać read_lock(x) jeśli przetrzymuje read_lock lub write_lock na danej X. 5. T nie może wydać write_lock(x) jeśli przetrzymuje read_lock lub write_lock na danej X. Systemy baz danych - Zbyszko Królikowski 202 Algorytmy synchronizacji współbieżnych transakcji (10) Wykorzystywanie blokad binarnych lub wielokrotnych przez transakcje nie gwarantuje jednak uszeregowalności realizacji, w której uczestniczą transakcje. Dlaczego? Przykład 6: T1 T2 read_lock(y); read_lock(x); read(y); read(x); unlock(y); unlock(x); write_lock(x); write_lock(y); read(x); read(y); X:=X+Y: Y:=X+Y; write(x); write(y); unlock(x); unlock(y); Systemy baz danych - Zbyszko Królikowski 204

Algorytmy synchronizacji współbieżnych transakcji (11) Przykład 6 - cd: Wartości początkowe danych: X = 20, Y = 30 Jaka będzie wartość tych danych po wykonaniu realizacji T1 T2? Jaka będzie wartość tych danych po wykonaniu realizacji T2 T1? Systemy baz danych - Zbyszko Królikowski Algorytmy synchronizacji współbieżnych transakcji (13) Przykład 6 - cd: Wartości początkowe danych: X = 20, Y = 30 Jaka będzie wartość tych danych po wykonaniu realizacji T1, T2 w sposób przeplatany według rysunku powyżej? Systemy baz danych - Zbyszko Królikowski 205 207 Algorytmy synchronizacji współbieżnych transakcji (12) Przykład 6 - cd. T1 T2 time read_lock(y); read(y); unlock(y); write_lock(x); read(x); X:=X+Y; write(x); unlock(x); read_lock(x); read(x); unlock(x); write_lock(y); read(y) Y:=X+Y; write(y); unlock(y); Systemy baz danych - Zbyszko Królikowski 206 Algorytmy synchronizacji współbieżnych transakcji (14) Two-Phase Locking (2PL) Transakcja jest wykonywana zgodnie z protokołem 2PL, jeśli wszystkie operacje blokowania read_lock i write_lock poprzedzają pierwszą operację unlock transakcji. Transakcja może być podzielona na 2 fazy; ekspansji (expanding), w której nowa blokada może być wykonana, ale żadna nie może być zwolniona, oraz fazy zwijania (shirnking) podczas której, istniejące blokady mogą być zwalniane, ale żadne nowe nie mogą być przyjęte. Blokady I II Faza ekspansji Faza zwijania Systemy baz danych - Zbyszko Królikowski 208

Algorytmy synchronizacji współbieżnych transakcji (15) Transakcje z przykładu 6 realizowane zgodnie z protokołem 2 PL T1 T2 read_lock(y); read(y); write_lock(x); read(y); X:=X+Y; write(x); unlock(y); unlock(x); read_lock(x); wait wait wait wait wait read(x) write_lock(y); read(y); Y:=Y+X; write(y) unlock(x) unlock(y) Systemy baz danych - Zbyszko Królikowski Algorytmy synchronizacji współbieżnych transakcji (17) Algorytm restryktywny: (1., 2.) 3. Operacje unlock(x) dla danej transakcji T są wykonywane po operacji commit lub rollback. początek transakcji blokada S + odczyt faza blokowania blokada X + zapis wstępny punkt zatwierdzenia zdjęcie blokady S zapis właściwy + zdjęcie blokady X faza odblokowywania Czas koniec transakcji Systemy baz danych - Zbyszko Królikowski 209 211 Algorytmy synchronizacji współbieżnych transakcji (16) Odmiany 2PL Algorytm podstawowy: 1. Każda operacja read(x) danej transakcji T musi być poprzedzona operacją read_lock(x) lub write_lock(x). 2. Każda operacja write(x) danej transakcji musi być poprzedzona operacją write_lock(x). 3. Operacje unlock(x) dla danej transakcji T są wykonywane po zakończeniu wszystkich operacji read i write. Algorytm statyczny: (1., 2., 3.) 4. Wszystkie blokady muszą być uzyskane przed rozpoczęciem transakcji (przez predeklarowanie zbioru odczytywanych i modyfikowanych danych). Systemy baz danych - Zbyszko Królikowski Algorytmy synchronizacji współbieżnych transakcji (18) Hierarchiczna metoda blokowania Problem ziarnistości blokad dobór rozmiaru blokowanej jednostki Koncepcja hierarchicznej struktury jednostek blokowania [J. Gray] baza danych jest widziana jako hierarchia jednostek blokowania zwanych ziarnami. BD Baza danych R 1 R 2... R n Relacje... Krotki Przykładowa hierarchia ziaren Systemy baz danych - Zbyszko Królikowski 210 212

Algorytmy synchronizacji współbieżnych transakcji (19) Hierarchiczna metoda blokowania cd. W hierarchicznych algorytmach blokowania wyróżnia się dwa rodzaje blokad: podstawowe (klasyczne blokady S oraz X) i intencjonalne Zakładając blokadę podstawową na określonym poziomie hierarchii ziaren blokujemy implicite wszystkie następniki tej jednostki w hierarchii Stosując wyłącznie mechanizm blokad podstawowych i gwarantując nienaruszalność warunku zgodności typów blokad, nie możemy zapewnić, że w przypadku współbieżnego wykonywania transakcji spójność bazy danych nie zostanie naruszona Przykład: Systemy baz danych - Zbyszko Królikowski 213 Algorytmy synchronizacji współbieżnych transakcji (21) Hierarchiczna metoda blokowania cd. Typy blokad intencjonalnych - komentarz: Systemy baz danych - Zbyszko Królikowski 215 Algorytmy synchronizacji współbieżnych transakcji (20) Hierarchiczna metoda blokowania cd. W celu zapewnienia poprawności hierarchicznego blokowania danych należy zagwarantować, że po założeniu przez transakcję blokady podstawowej danego wierzchołka R w hierarchii ziaren, żadna inna transakcja nie uzyska zgodnej z nią blokady żadnego wierzchołka będącego poprzednikiem R. Rozwiązanie: blokady intencjonalne założenie blokady intencjonalnej na danym poziomie hierarchii oznacza, że na niższym poziomie jest założona blokada podstawowa Typy blokad intencjonalnych: Intencjonalna blokada współdzielona (IS) Intencjonalna blokada wyłączna (IX) Blokada mieszana (SIX), która jest połączeniem podstawowej blokady współdzielonej i intencjonalnej blokady wyłącznej Systemy baz danych - Zbyszko Królikowski 214 Algorytmy synchronizacji współbieżnych transakcji (22) Hierarchiczna metoda blokowania cd. Tabela zgodności blokad dla hierarchicznej metody blokowania blokada żądana blokada ustawiona IS IX S SIX X IS true true true true false IX true true false false false S true false true false false SIX true false false false false X false false false false false Systemy baz danych - Zbyszko Królikowski 216

Algorytmy synchronizacji współbieżnych transakcji (23) Algorytm sygnalizacyjny Transakcja T jest wykonywana zgodnie z algorytmem sygnalizacyjnym wtedy, gdy spełnione są następujące warunki: 1. Pierwszym wierzchołkiem, do którego T żąda dostępu jest korzeń drzewa ziaren; 2. Transakcja T może założyć blokadę IS lub S wierzchołka nie będącego korzeniem wtedy i tylko wtedy, gdy blokuje jego poprzednika blokadą typu IS lub IX; 3. Transakcja T może założyć blokadę IX lub X wierzchołka nie będącego korzeniem wtedy i tylko wtedy, gdy blokuje jego poprzednika blokadą typu IX lub SIX; 4. Wszystkie blokady założone przez transakcję T muszą być zdjęte albo po zakończeniu jej wykonywania albo w trakcie jej wykonywania w kolejności odwrotnej do kolejności zakładania blokad (tj. od liści do korzenia drzewa). Systemy baz danych - Zbyszko Królikowski 217 Zakleszczenie transakcji (1) Stan zakleszczenia może wystąpić jeśli dwie transakcje oczekują wzajemnie na zwolnienie blokad danych T1 T2 read_lock(y); read(y); write_lock(x); wait wait read_lock(x); read(x) write_lock(y); wait wait wait Systemy baz danych - Zbyszko Królikowski 219 Algorytmy synchronizacji współbieżnych transakcji (24) Algorytm sygnalizacyjny Przykład: abcd ab cd a b c d Niech transakcja T1 odczytuje daną b i zapisuje dane c i d. Współbieżnie z transakcją T1 są wykonywane transakcje T2 i T3, z których pierwsza zamierza odczytać dane a i b, natomiast druga daną c. Jakie blokady (i w jakiej kolejności) muszą założyć te transakcje? Czy będzie możliwa współbieżna realizacja całego zbioru transakcji? Systemy baz danych - Zbyszko Królikowski 218 Zakleszczenie transakcji (2) X ' ' T T 1 2 Y Problem zakleszczenia - graf oczekiwania Rozwiązaniem tego problemu jest wykorzystanie protokołu zapobiegania zakleszczeniu - takim protokołem jest statyczny 2PL, który wymaga aby każda transakcja zablokowała wszystkie jednostki danych z wyprzedzeniem; jeśli na jakieś danej nie może założyć blokady to żadna z blokad nie może być założona ( wszystko albo nic ); transakcja czeka i po chwili próbuje ponownie. Systemy baz danych - Zbyszko Królikowski 220

Zakleszczenie transakcji (3) Inne protokoły zapobiegania - podejmują decyzję czy transakcja zaangażowana w deadlock powinna czekać, czy być wycofaną. Protokoły te oparte są o technikę znaczników czasowych transakcji TS(T) (ang. transaction timestamp), które są unikalnymi identyfikatorami transakcji. Znaczniki są uporządkowane wg kolejności startowania transakcji, tzn. jeśli T1 zaczyna się przed T2 to TS(T1)<TS(T2) - starsza transakcja ma mniejszy znacznik czasowy. Algorytmy wykorzystujące znaczniki czasowe transakcji - TS(T), nadawane w momencie przybywania transakcji do systemu: wait-die: Transakcja Ti próbuje uzyskać blokadę na danej X, tymczasem dana ta jest już zablokowana przez transakcję Tj. Jeżeli TS(Ti)<TS(Tj) (Ti jest starsza Tj) wtedy transakcja Ti będzie czekać na zwolnienie blokady. W przeciwnym wypadku Ti będzie wycofana i restartowana z tym samym znacznikiem czasowym. wound-wait: Transakcja Ti próbuje uzyskać blokadę na danej X, tymczasem dana ta jest już zablokowana przez transakcję Tj. Jeżeli TS(Ti)<TS(Tj) (Ti jest starsza Tj) wtedy transakcja Tj będzie wycofana i restartowana z tym samym znacznikiem czasowym. W przeciwnym wypadku Ti będzie czekać na zwolnienie blokady. Systemy baz danych - Zbyszko Królikowski 221 Zakleszczenie transakcji (5) Algorytmy nie korzystające ze znaczników czasowych. no waiting (NW): Transakcja Ti próbuje uzyskać blokadę na danej X, tymczasem dana ta jest już zablokowana przez transakcję Tj. Transakcja Ti będzie wycofana i restartowana z pewnym opóźnieniem czasowym bez sprawdzania zakleszczenia. Może powodować wycofywanie transakcji bez powodu. cautious waiting (CW): Transakcja Ti próbuje uzyskać blokadę na danej X, tymczasem dana ta jest już zablokowana przez transakcję Tj. Jeżeli transakcja Tj nie czeka na uzyskanie innej blokady, Ti będzie czekać na zwolnienie blokady przez Tj. W przeciwnym wypadku Ti będzie wycofana i restartowana. Systemy baz danych - Zbyszko Królikowski 223 Zakleszczenie transakcji (4) wait-die: if TS(Ti)<TS(Tj) (Ti is older than Tj) then Ti is allowed to wait otherwise abort Ti (Ti dies) and restart it later with the same timestamp wound-wait: if TS(Ti)<TS(Tj) (Ti is older than Tj) then abort Tj (Ti wounds Tj) and restart it later with the same timestamp otherwise Ti is allowed to wait Systemy baz danych - Zbyszko Królikowski 222 Zakleszczenie transakcji (6) Metoda wykrywania - periodycznie sprawdza się, czy system znajduje się w stanie zakleszczenia. Metoda ta jest odpowiednia dla systemów mało obciążonych, z krótkimi transakcjami (tylko kilka blokad). W przeciwnej sytuacji lepszym rozwiązaniem jest protokół zapobiegania. Najprostszą metodą wykrycia zakleszczenia jest skonstruowanie grafu oczekiwania (wait - for graph). Każdej transakcji odpowiada jeden wierzchołek w grafie. Jeśli Ti czeka na blokadę X utrzymywaną aktualnie przez Tj, w grafie tworzona jest krawędź (Ti Tj). Po zwolnieniu blokady krawędź jest usuwana z grafu. Stan zakleszczenia ma miejsce wtedy i tylko wtedy jeśli w grafie występuje cykl. Systemy baz danych - Zbyszko Królikowski 224

Zakleszczenie transakcji (7) Wybór transakcji do usunięcia, spośród grupy transakcji znajdujących się w stanie zakleszczenia jest nazywany wyborem ofiary (victim selection). Ofiarą powinna być transakcja, która niedługo przebywa w systemie i nie wykonała wielu operacji zapisu. Problem cyklicznego restartowania transakcji Systemy baz danych - Zbyszko Królikowski 225