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



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

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

Wielowersyjne metody synchronizacji transakcji

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

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

Zarządzanie transakcjami

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

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

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

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

Bazy danych. Andrzej Łachwa, UJ, /15

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

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

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ą

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA. Przetwarzanie transakcyjne

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

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

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

Bazy danych. Dr inż. Paweł Kasprowski

Tadeusz Pankowski

Właściwości transakcji

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

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

Bazy danych 2. Wykład 6 Transakcje

Bazy danych w sterowaniu

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

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

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

Tadeusz Pankowski

Pliki. Operacje na plikach w Pascalu

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

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

Przechowywanie danych

:11 BD_1_W9

Bazy danych 9. SQL Klucze obce Transakcje

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

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

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

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)

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

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

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

Recovery Transakcyjne odtwarzanie bazy danych po awarii

Rozproszone i obiektowe systemy baz danych

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

Transakcje jednocześnie ACID

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

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

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

Dazy Banych. Michał Rusnarczyk

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

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

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

Bazy danych Transakcje

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

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

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

Bazy danych 9. Klucze obce Transakcje

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

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

Sortowanie topologiczne skierowanych grafów acyklicznych

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

Złożona struktura transakcji

Kopie zapasowe w SQL Server. Michał Bleja

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

Transakcje Wykład z bazy danych dla studen

System plików. Warstwowy model systemu plików

4. Procesy pojęcia podstawowe

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

Przykładowe B+ drzewo

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

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

Przykładowe rozwiązania

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

Wprowadzenie do programowania współbieżnego

4. Procesy pojęcia podstawowe

Bazy danych. Zasady konstrukcji baz danych

Równoległość i współbieżność

Równoległość i współbieżność

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

Problem zakleszczenia

Synchronizacja procesów i wątków

TESTU NIE MUSZA BYC W 100% POPRAWNE!!!

Ćwiczenie 9 współbieŝność

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

Systemy operacyjne III

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 ZAMAWIANIE I REZERWOWANIE

Algorytm. a programowanie -

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Wstęp do informatyki- wykład 2

Transkrypt:

Zarządzanie współbieżnością transakcji 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 149

Zarządzanie współbieżnością transakcji 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 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; end 150

Zarządzanie współbieżnością transakcji 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. 151

Zarządzanie współbieżnością transakcji 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: T 1 : read(x); T 2 : read(x); X := X - N; X := X + M; write(x); write(x); read(y); Y := Y + N; write(y); 152

Zarządzanie współbieżnością transakcji 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 T 1 i T 2 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 153

Zarządzanie współbieżnością transakcji Komentarz: 154

Zarządzanie współbieżnością transakcji The Lost Update Problem: T 1 : T 2 : 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. 155

Zarządzanie współbieżnością transakcji The Temporary Update (Dirty Read) Problem: Jedna z transakcji aktualizuje stan bazy danych poczym pojawia się błąd w jej wykonaniu (ang. fails) T 1 : T 2 : read(x); X := X - N; time write(x); read(y); read(x); X := X + M; write(x); dirty data Błąd w wykonaniu T 1 i wartość X musi być zmieniona na poprzednią starą wartość, a w tym czasie T 2 przeczytała tymczasową niepoprawną wartość X 156

Zarządzanie współbieżnością transakcji 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 T 1 : T 3 : read(x); X := X - N; write(x); 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 157

Zarządzanie współbieżnością transakcji Komentarz: 158

Zarządzanie współbieżnością transakcji 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!!! 159

Zarządzanie współbieżnością transakcji 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 160

Zarządzanie współbieżnością transakcji 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) 161

Zarządzanie współbieżnością transakcji Podstawowe operacje składowe transakcji - komentarz 162

Zarządzanie współbieżnością transakcji 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 163

Zarządzanie współbieżnością transakcji Diagram stanów transakcji Begin transaction ACTIVE Read / Write End_transaction PARTIALLY COMMITTED Commit COMMITTED Abort Abort FAILED TERMINATED 164

Zarządzanie współbieżnością transakcji Diagram stanów transakcji - komentarz 165

Zarządzanie współbieżnością transakcji 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: 1. [start_transaction, T] 2. [write, T, X, old_value, new_value] 3. [read, T, X] 4. [commit, T] 5. [abort, T] (T jest to unikalny identyfikator transakcji nadawany przez system) 166

Zarządzanie współbieżnością transakcji 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) 167

Zarządzanie współbieżnością transakcji 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 administrator pomiędzy punktami kontrolnymi określa 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 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 169

Własności ACID transakcji Jakie moduły SZBD odpowiadają za egzekwowanie własności ACID? Komentarz: 170

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 T 1,..., T n jest pewnym uporządkowaniem operacji transakcji, przy czym dla każdej T i, która uczestniczy w S, jej operacje w S muszą występować w takim porządku w jakim występują w T i. Operacje transakcji T j mogą być przeplecione z operacjami transakcji T i z realizacji S Będziemy dalej rozważać następujące operacje: read r write w commit c abort a 171

Uszeregowanie transakcji Przykład 4 T 1 : T 2 : read(x); X := X - N; time read(x); X := X + M; write(x); read(y); write(x); Y := Y + N; write(y); Realizacja S a : r 1 (X); r 2 (X); w 1 (X); r 1 (Y); w 2 (X); c 2 ; w 1 (Y); c 1 ; 172

Uszeregowanie transakcji Przykład 4 cd. read(x); X := X - N; Time write(x); read(y); T 1 : T 2 : read(x); X := X + M; write(x); Realizacja S b : r 1 (X); w 1 (X); r 2 (X); w 2 (X); c 2 ; r 1 (Y); a 1 ; (Przy założeniu, że T 1 będzie wycofana po wykonaniu read(y) 173

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 T i i T j są konfliktowe jeżeli zawierają wzajemnie konfliktowe operacje Które operacje w realizacjach S a i S b są konfliktowe? Realizacja S transakcji T 1,..., T n 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 T 1,..., T n ; 2. Dla każdej pary operacji w T i ich uporządkowanie w S jest takie samo jak T i ; 3. Dla każdych dwóch konfliktowych operacji, określone jest ich uporządkowanie. 174

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 S a z przykładu 4 jest odtwarzalna? 175

Uszeregowanie transakcji Realizacje odtwarzalne cd. Czy realizacja S c i S d są odtwarzalne? S c : r 1 (X); w 1 (X); r 2 (X); r 1 (Y); w 2 (X); c 2 ; a 1 ; S d : r 1 (X); w 1 (X); r 2 (X); r 1 (Y); w 2 (X); w 1 (Y); c 1 ; c 2 ; W realizacji odtwarzalnej nie zatwierdzone transakcje nie muszą być wycofywane 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 S e : r 1 (X); w 1 (X); r 2 (X); r 1 (Y); w 2 (X); w 1 (X); a 1 ; 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ę S e aby powyższe kryterium było spełnione? 177

Uszeregowalność realizacji (ang. Serializability of Schedules) T 1 i T 2 zgłoszone w tym samym czasie, wykonywane sekwencyjnie T 1 T 2 T 1 T 2 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 178

Uszeregowalność realizacji transakcji T 1 i T 2 są wykonywane w trybie przeplatanym T 1 T 2 T 1 T 2 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 179

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? 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 181

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ę T i jest zbiorem wartości odczytywanych przez nią danych Dwie realizacji S 1 i S 2 są stanowo równoważne jeżeli dla dowolnego początkowego stanu bazy danych, stan bazy danych po wykonaniu realizacji S 1 jest identyczny ze stanem po wykonaniu tego zbioru transakcji zgodnie z realizacją S 2. Czy realizacje S 1 i S 2 są stanowo równoważne (sprawdź dla X = 100 i innych wartości) S 1 S 2 read(x); read(x); X := X + 10; X := X * 1.1; write(x); write(x); 182

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 S 1 i S 2 są konfliktowo równoważne, jeżeli dla każdej pary konfliktowych operacji w realizacji S 1, takich, że operacja i (X) operacja j (X) (operacja i (X) poprzedza operacja j (X)), zachodzi również operacja i (X) operacja j (X) w realizacji S 2. 183

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: S a : r 1 (X), w 2 (X); S b : w 2 (X), r 1 (X); Czy wartość odczytana przez r 1 (X) w obu realizacjach będzie taka sama? 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? 185

186

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={T 1...T n } i zbioru skierowanych krawędzi E = {e 1...e m }. Każdej transakcji odpowiada jeden wierzchołek; każda krawędź e i ma postać (T j T k ), 1 j n, 1 k n. Mówimy, że transakcja T j poprzedza T k w realizacji S, co zapisujemy T j T k, jeżeli zawierają odpowiednie operacje konfliktowe, między którymi zachodzi związek poprzedzania T j jest wierzchołkiem początkowym, a T k końcowym dla krawędzi e i, takiej, że jedna z operacji w T j występuje w realizacji S przed pewną operacją konfliktową w T k. Cyklem w grafie skierowanym jest sekwencja krawędzi C = (T j T k ), (T k T p ),...,(T i T j ). 187

Testing for conflict serializability of a schedule (2) Algorytm testowania uszeregowalności konfliktowej realizacji S (1) dla każdej T j w S utwórz wierzchołek z etykietą T j w grafie uszeregowalności (2) dla każdego przypadku w S gdy T j wykonuje read(x) po write(x), wykonywanej przez T i, utwórz krawędź (T i T j ) (3) dla każdego przypadku w S gdy T j wykonuje write(x) po read(x), wykonywanej przez T i, utwórz krawędź (T i T j ) (4) dla każdego przypadku w S gdy T j wykonuje write(x) po write(x), wykonywanej przez T i, utwórz krawędź (T i T j ) (5) realizacja S jest uszeregowalna wtedy i tylko wtedy jeśli graf uszeregowalności nie zawiera cykli. Krawędź T i T j (od T i do T j ) oznacza, że transakcja T i musi wystąpić przed transakcją T j 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. 188

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 T i T j, T i musi występować przed T j w równoważnej realizacji sekwencyjnej S. Grafy uszeregowalności dla realizacji A, B, C i D T 1 T 2 X Graf uszeregowalności dla realizacji A T 1 T 2 X Graf uszeregowalności dla realizacji B X T T 1 2 X Graf uszeregowalności dla realizacji C (nieuszeregowalny) T T 1 2 X Graf uszeregowalności dla realizacji D (uszeregowalny, równoważny realizacji A) 189

Testing for conflict serializability of a schedule (4) Przykład 5 Transaction T 1 Transaction T 2 Transaction T 3 read (X); write (X); read (Y); write (Y); read (Z); read (Y); write (Y); read (X); write (X); read (Y); read (Z); write (Y); write (Z); 190

Testing for conflict serializability of a schedule (5) Realizacja E Transaction T 1 Transaction T 2 Transaction T 3 time read (X); write (X); read (Y); write (Y); read (Z); read (Y); write (Y); read (X); read (Y); read (Z); write (Y); write (Z); write (X) 191

Testing for conflict serializability of a schedule (6) Realizacja F Transaction T 1 Transaction T 2 Transaction T 3 time read (X); write (X); read (Y); write (Y); read (Z); read (Y); write (Y); read (X); write (X); read (Y); read (Z); write (Y); write (Z); 192

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 T 3 T 1 T 2. Y T 1 T 2 X Equivalent serial schedules Reason: none Y T 3 Y,Z 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 193

Testing for conflict serializability of a schedule (8) Sekwencja: T 3 T 1 T 2 T 1 T 2 T 3 read (X); write (X); read (Y); write (Y); read (Z); read (Y); write (Y); read (X); write (X); read (Y); read (Z); write (Y); write (Z); 194

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ść 195

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 196

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

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; 198

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> 199

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> 200

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; 201

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; 202

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. Komentarz: 203

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 żądana blokada ustawiona S X S true false X false false 204

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: T 1 T 2 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); 205

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 T 1 T 2? Jaka będzie wartość tych danych po wykonaniu realizacji T 2 T 1? 206

Algorytmy synchronizacji współbieżnych transakcji (12) Przykład 6 - cd. T 1 T 2 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); 207

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 T 1, T 2 w sposób przeplatany według rysunku powyżej? Komentarz: 208

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 Faza ekspansji II Faza zwijania 209

Algorytmy synchronizacji współbieżnych transakcji (15) Transakcje z przykładu 6 realizowane zgodnie z protokołem 2 PL T 1 T 2 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) 210

Algorytmy synchronizacji współbieżnych transakcji (16) Komentarz: 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). 211

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 Komentarz: 212

Algorytmy synchronizacji współbieżnych transakcji (18) Hierarchiczna metoda blokowania Problem ziarnistości blokad dobór rozmiaru blokowanej jednostki Komentarz: 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 213

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 Komentarz: 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: 214

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 215

Algorytmy synchronizacji współbieżnych transakcji (21) Hierarchiczna metoda blokowania cd. Typy blokad intencjonalnych - komentarz: 216

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 217

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

Algorytmy synchronizacji współbieżnych transakcji (24) Algorytm sygnalizacyjny Przykład: abcd ab cd Niech transakcja T 1 odczytuje daną b i zapisuje dane c i d. Współbieżnie z transakcją T 1 są wykonywane transakcje T 2 i T 3, 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? Komentarz: a b c d 219

Zakleszczenie transakcji (1) Stan zakleszczenia może wystąpić jeśli dwie transakcje oczekują wzajemnie na zwolnienie blokad danych T 1 T 2 read_lock(y); read(y); write_lock(x); wait wait read_lock(x); read(x) write_lock(y); wait wait wait 220

Zakleszczenie transakcji (2) Komentarz: 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. 221

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 T 1 zaczyna się przed T 2 to TS(T 1 )<TS(T 2 ) - starsza transakcja ma mniejszy znacznik czasowy. Algorytmy wykorzystujące znaczniki czasowe transakcji - TS(T), nadawane w momencie przybywania transakcji do systemu: wait-die: Transakcja T i próbuje uzyskać blokadę na danej X, tymczasem dana ta jest już zablokowana przez transakcję T j. Jeżeli TS(T i )<TS(T j ) (T i jest starsza T j ) wtedy transakcja T i będzie czekać na zwolnienie blokady. W przeciwnym wypadku T i będzie wycofana i restartowana z tym samym znacznikiem czasowym. wound-wait: Transakcja T i próbuje uzyskać blokadę na danej X, tymczasem dana ta jest już zablokowana przez transakcję T j. Jeżeli TS(T i )<TS(T j ) (T i jest starsza T j ) wtedy transakcja T j będzie wycofana i restartowana z tym samym znacznikiem czasowym. W przeciwnym wypadku T i będzie czekać na zwolnienie blokady. 222

Zakleszczenie transakcji (4) wait-die: if TS(T i )<TS(T j ) (T i is older than T j ) then T i is allowed to wait otherwise abort T i (T i dies) and restart it later with the same timestamp wound-wait: if TS(T i )<TS(T j ) (T i is older than T j ) then abort T j (T i wounds T j ) and restart it later with the same timestamp otherwise T i is allowed to wait 223

Zakleszczenie transakcji (5) Algorytmy nie korzystające ze znaczników czasowych. no waiting (NW): Transakcja T i próbuje uzyskać blokadę na danej X, tymczasem dana ta jest już zablokowana przez transakcję T j. Transakcja T i będzie wycofana i restartowana z pewnym opóźnieniem czasowym bez sprawdzania zakleszczenia. Może powodować wycofywanie transakcji bez powodu. cautious waiting (CW): Transakcja T i próbuje uzyskać blokadę na danej X, tymczasem dana ta jest już zablokowana przez transakcję T j. Jeżeli transakcja T j nie czeka na uzyskanie innej blokady, T i będzie czekać na zwolnienie blokady przez T j. W przeciwnym wypadku T i będzie wycofana i restartowana. 224

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 T i czeka na blokadę X utrzymywaną aktualnie przez T j, w grafie tworzona jest krawędź (T i T j ). Po zwolnieniu blokady krawędź jest usuwana z grafu. Stan zakleszczenia ma miejsce wtedy i tylko wtedy jeśli w grafie występuje cykl. 225

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 226

Zarządzanie współbieżnością przez znaczniki czasowe Znacznik czasowy to unikalny identyfikator oznaczający moment zgłoszenia transakcji w systemie, oznaczany przez TS(T) Algorytmy zarządzania współbieżnością przez znaczniki czasowe nie prowadzą do zakleszczenia Timestamp ordering: uszeregowanie równoważne konkretnej realizacji sekwencyjnej 2PL: uszeregowanie równoważne pewnej realizacji sekwencyjnej 227

Algorytm Timestamp Ordering (TO) (1) Dwa znaczniki czasowe danej X Read_TS(X): największy znacznik czasowy transakcji która odczytała daną X (znacznik czasowy najmłodszej transakcji która odczytała daną X) Write_TS(X): największy znacznik czasowy transakcji która odczytała daną X (znacznik czasowy najmłodszej transakcji która odczytała daną X) 228

Algorytm Timestamp Ordering (TO) (2) Basic Timestamp Ordering 1. Transakcja wykonuje operację write_item(x) a. jeśli Read_TS(X)>TS(T) lub Write_TS(X)>TS(T) to wycofaj transakcję T b. jeśli warunek (a) nie jest spełniony to wykonaj write_item(x) i wpisz Write_TS(X) := TS(T) 2. Transakcja wykonuje operację read_item(x) a. jeśli Write_TS(X)>TS(T) to wycofaj transakcję T b. jeśli Write_TS(X) <= TS(T) to wykonaj read_item(x) i wpisz Read_TS(X) := max{ts(t),read_ts(x)} 229

Algorytm Timestamp Ordering (TO) (3) Strict Timestamp Ordering Transakcja T wykonująca read_item(x) lub write_item(x) gdy TS(T)>Write_TS(X) musi opóźnić operację aż do zakończenia transakcji T która zapisała X (Write_TS(X)=TS(T )) co jest konieczne do zaimplementowania STO? 230

Algorytm Timestamp Ordering (TO) (4) Thomas s Write Rule Warunki dla write_item(x) 1. jeśli Read_TS(X) > TS(T) to wycofaj transakcję T 2. jeśli Write_TS(X) > TS(T) wówczas ignoruj operację write_item(x) 3. jeśli nie jest spełnione (1) ani (2) wówczas wykonaj write_item(x) i wpisz Write_TS(X) := TS(T) 231