Wielowersyjne metody synchronizacji transakcji

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

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

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

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

Właściwości transakcji

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

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

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

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

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

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

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

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

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA. Przetwarzanie transakcyjne

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

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

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

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Tadeusz Pankowski

Bazy danych. Andrzej Łachwa, UJ, /15

Zarządzanie transakcjami

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Tadeusz Pankowski

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

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

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

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Bazy danych 2. Wykład 6 Transakcje

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

Bazy danych w sterowaniu

Procedury i funkcje składowane

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

Oracle11g: Wprowadzenie do SQL

Ćwiczenie 3. Współbieżność i transakcje

Dazy Banych. Michał Rusnarczyk

PODSTAWY BAZ DANYCH Wykład 9

Microsoft SQL Server Podstawy T-SQL

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

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań,

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Bazy danych 9. SQL Klucze obce Transakcje

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

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

Ćwiczenie 9 współbieŝność

Język PL/SQL Procedury i funkcje składowane

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

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

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

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

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

Bazy danych Transakcje

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

Transakcje Wykład z bazy danych dla studen

Przechowywanie danych

Bazy danych. Dr inż. Paweł Kasprowski

SQL 4 Structured Query Lenguage

Cele. Definiowanie wyzwalaczy

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba.

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

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

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Język PL/SQL. Rozdział 2. Kursory

Kursor jawny. Rozdział 10a Kursory. Deklarowanie kursora (1) Deklarowanie kursora (2)

PODSTAWY BAZ DANYCH 13. PL/SQL

Relacyjne bazy danych. Podstawy SQL

Oracle PL/SQL. Paweł Rajba.

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Data Mining Wykład 3. Algorytmy odkrywania binarnych reguł asocjacyjnych. Plan wykładu

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

1. Wyzwalacze BD (ang. triggers)

Przykładowa baza danych BIBLIOTEKA

Złożona struktura transakcji

Administracja i programowanie pod Microsoft SQL Server 2000

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Wstęp do programowania 2

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

Transakcje jednocześnie ACID

Internetowe bazy danych

Wyzwalacze (triggery) Przykład

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Bloki anonimowe w PL/SQL

Relacyjne bazy danych. Podstawy SQL

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Kursor. Rozdział 10a Kursory. Otwieranie kursora. Deklarowanie kursora

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Hurtownia Świętego Mikołaja projekt bazy danych

PL/SQL. Zaawansowane tematy PL/SQL

Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do

BAZA DANYCH SIECI HOTELI

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Systemy GIS Tworzenie zapytań w bazach danych

Deklarowanie kursora

P o d s t a w y j ę z y k a S Q L

Wykład 8. SQL praca z tabelami 5

Transkrypt:

Wielowersyjne metody synchronizacji transakcji

Jednowersyjne algorytmy synchronizacji Wszystkie modyfikacje danych polegają na zniszczeniu starej wartości danych i wpisaniu w jej miejsce nowej wartości. Niski stopień współbieżności algorytmów synchronizacji transakcji problem transakcji intensywnie odczytujących dane. Przykładowa historia nieuszeregowalna: H: r 1 [x] r 2 [x, y] w 2 [x, y] c 2 r 1 [y] c 1 Wysoki stopień konfliktowości operacji operacja operacja read(x) write(x) read(x) write(x)

Wielowersyjne bazy danych W wielowersyjnych bazach danych operacja modyfikacji polega na utworzeniu nowej wersji danej i zachowaniu wersji poprzedniej. Poszczególne dane zawierają wartość aktualną danej i listę historycznych wartości danej: x = (x 0, x 1, x 2,..., x k ). Metody synchronizacji transakcji stosowane w wielowersyjnych bazach danych wykorzystujące do synchronizacji historyczne wersje danych charakteryzują się większym stopniem współbieżności transakcji. Przykład: H: r 1 [x 0 ] r 2 [x 0,y 0 ] w 2 [x 1,y 1 ] c 2 r 1 [y 0 ] c 1 Powyższa historia niepoprawna dla jednowersyjnej bazy danych jest w realizacji wielowersyjnej równoważna sekwencji transakcji T 1 T 2. Konfliktowość operacji: T l T k read(x i ) write(x i ) read(x i ) write(x i ) N/A read(x j ) write(x j )

Historie wielowersyjne Historią wielowersyjną hw zbioru transakcji τ nazywamy częściowo uporządkowany zbiór operacji tych transakcji: hw(τ)=( T hw(τ),p wr,h) gdzie: jest sumą wszystkich operacji transakcji ze zbioru τ; 1. T ( τ ) = hw U T Ti τ i 2. p U p hw T i i τ ; jest relacją częściowego porządku na zbiorze operacji, pokrywającą się z porządkiem operacji w transak- 3. h : T hw T hw jest takim odwzorowaniem operacji odczytu {r i (x) T hw(τ)} w zbiór operacji zapisu {w j (x) T hw(τ)}, że dla każdej operacji odczytu r i (x), jeżeli h(r i (x)) = w j (x), to w j (x) p wr r i (x) (operacje tworzenia wersji muszą poprzedzać operacje ich odczytu). Odwzorowanie h określa wersje danych odczytywanych przez transakcje.

Uszeregowalność historii wielowersyjnych Wielowersyjna historia współbieżna transakcji jest uszeregowalna, jeżeli jest równoważna (stanowo i obrazowo, albo konfliktowo) choć jednej wielowersyjnej historii sekwencyjnej tych samych transakcji. Czy taka definicja jest wystarczająca? Załóżmy, że baza danych zawiera daną x, której wartość początkowa jest równa: x=(x 0 =1000). Na bazie danych trzy transakcje, z których każda zwiększa wartość danej x o 1000: T i ={x=x+1000}, i=1,2,3. Rozważmy następującą historię tych transakcji: H serial : r 1 [x 0 ], w 1 [x 0 +1000], c 1, r 2 [x 0 ], w 2 [x 0 +1000], c 2, r 3 [x 0 ], w 3 [x 0 +1000], c 3 Końcowy stan bazy danych będzie następujący: x=(x 0 =1000,x 1 =2000,x 2 =2000,x 3 =2000) Wielowersyjna historia sekwencyjna jest niepoprawna!!! Potrzebna jest nowa definicja poprawnej wielowersyjnej historii sekwencyjnej

Standardowe sekwencyjne historie wielowersyjne Sekwencyjna historia wielowersyjna jest standardowa, jeżeli każda operacja odczytu danej dotyczy ostatnio utworzonej wersji tej danej. Bardziej formalnie, dla dowolnej operacji odczytu r i [x] nie istnieje operacja zapisu w j [x] taka, że spełniony byłby warunek: h(r i [x]) p hw w j [x] p hw r i [x] Kryterium uszeregowalności wielowersyjnej Wielowersyjna historia hw(τ) zbioru transakcji τ jest uszeregowalna wtedy i tylko wtedy, gdy jest ona równoważna dowolnej standardowej sekwencyjnej historii wielowersyjnej zbioru transakcji τ.

Wielowersyjny algorytm blokowania dwufazowego (model dwu-wersyjny) Wielowersyjny algorytm blokowania dwufazowego wprowadza nowy rodzaj operacji: certyfikację wersji danych. Odczytywane przez transakcje mogą być jedynie wersje certyfikowane. Stąd nowe wersje tworzone przez transakcje są niedostępne dla innych transakcji aż do momentu ich certyfikacji. Z operacją certyfikacji związany jest nowy rodzaj blokady. Operacje certyfikacji wykonywane są automatycznie przez system bazy danych w momencie zatwierdzania transakcji. Ze względu na proces blokowania, dane w bazie danych mogą występować w jednym z czterech stanów: dana nie zablokowana - dana zablokowana dla odczytu - R dana zablokowana dla zapisu - W dana zablokowana do certyfikacji - C Kompatybilność blokad blokada posiadana blokada żądana R W C R W C

Wielowersyjny algorytm blokowania dwufazowego i) ii) T 1 T 3 T 3 T 2 R R R X W new version X' T4 X C replace X' T4 T 4 Dana występuje w dwóch wersjach X i X. Wersja X jest zatwierdzoną wersją danej udostępnianą transakcjom innym niż twórca wersji X. Wersja X jest niezatwierdzoną wersją danej dostępną jedynie dla transakcji, która ją utworzyła. Algorytm odczytu wersji danej Read(x, tid) begin Odczyt konfliktowy B: if (LOCK(x, tid) = C) tylko z certyfikacją then begin < wstaw żądanie do kolejki i czekaj>; go to B; end; else begin LOCK(x, tid) R; < czytaj zaakceptowana wersję x >; end; end Read;

Algorytm zapisu wersji danej Write(x, tid) begin B: if (LOCK(x,tid) = 0 or LOCK(x,tid)=R) then begin LOCK(X, tid) W; < twórz nową wersję x' >; end; else begin <wstaw żądanie do kolejki i czekaj>; go to B; end; end Write; Zapis nie jest konfliktowy z odczytem Algorytm certyfikacji niezatwierdzonej wersji danej Certify(x, tid) begin B: if (liczba blokad do odczytu na X=0) then begin LOCK(X, tid) C; <zamień starą wersję x na x'>; end; else begin < wstaw żądanie do kolejki i czekaj>; go to B; end; end Certify;

Przykład H: r 1 [x] r 2 [x,y] w 2 [x,y] c 2 r 1 [y] c 1 Ta historia jest nieuszeregowalna w jednowersyjnej bazie danych ze względu na cykl w grafie x uszeregowalności: T2 T1 y Algorytm poprawnie uporządkuje powyższą historię: H hw : r 1 [x 0 ] r 2 [x 0,y 0 ] w 2 [x 1,y 1 ] c 2 r 1 [y 0 ] c 1 c 2 T1 x T2 y

Wielowersyjny algorytm znaczników czasowych W wielowersyjnej bazie danych dla każdej danej x=<x 0,x 1,...,x n > utrzymywana jest jej historia: H(x)={(Read_TS(x 0 ),Write_TS(x 0 ),...,(Read_TS (x n ), Write_TS(x n )}, gdzie: Read_TS(x i ) - największy (najpóźniejszy) znacznik czasowy ze zbioru wszystkich transakcji, które pomyślnie odczytały i-tą wersję danej x. Write_TS(x i )- znacznik czasowy transakcji, która utworzyła i-tą wersję danej x. Historia H(x)={(1,5),(8,10),(13,18),(19,19)} oznacza, że dana x ma cztery wersje (x 0,x 1,x 2,x 3 ), utworzonych przez transakcje o znacznikach czasowych 1,8,13,19, i odczytanych ostatnio przez transakcje o znacznikach czasowych 5,10,18,19. r(x) w(x) r(y) w(z) Moduł synchronizacji r(x 2 ) w(x 3 ) r(y 9 ) w(z 7 )

Algorytmy synchronizacji Algorytm odczytu zamienia odwołanie do generycznej danej na odczyt jednej z wersji tej danej. Odczytywana jest najstarsza wersja ze zbioru wersji utworzonych przez transakcje młodsze od danej. Operacje odczytu są zawsze poprawne nie mogą być przyczyną wycofania transakcji. Read(Ti,x) begin < czytaj xk,takie że Write_TS(xk)= max{write_ts(xj):write_ts(xj) TS(Ti)}>; if (Read_TS(xk) < TS(Ti)) then Read_TS(xk) TS(Ti); end Read; Operacja zapisu tworzy nową wersję danej. Operacja ta będzie powodem odrzucenia transakcji gdy w zbiorze wersji danej istnieje wersja x i taka, że znacznik czasowy transakcji spełnia zależność: Write_TS(xi) TS(T k )< Read_TS(xi) Write(Ti, x) begin if (istnieje xk, takie że Write_TS(xk) TS(Ti)< Read_TS(xk)) then < wycofaj Ti i powtórnie uruchom ją z nowym znacznikiem czasowym >; else begin < utwórz xk >; Write_TS(xk), Read_TS(xk) TS(Ti); end; end Write;

Przykład x 1 x 2 x 3 x 4 7:00 7:15 7:45 7:50 7:55 8:40 9:10 9:30 T 7:20 :w(x) T 8:50 :r(x) x 1 x 5 x 2 x 3 x 4 7:00 7:15 7:45 7:50 7:55 8:40 9:10 9:30 T 8:15 :w(x) x 1 x 2 x 3 x 4 7:00 7:15 7:45 7:50 7:55 8:40 9:10 9:30

Synchronizacja transakcji w systemie ORACLE Poziom izolacji Read Committed Dirty write Dirty read Lost update Fuzzy read Read skew Write skew Phantom - - Serializable - - - - - Serializable +for update - - - - - - Dla synchronizacji zapisów (brudny zapis) blokowanie dwufazowe operacji zapisu. Dla zwiększenia efektywności blokowania hierarchia ziarnistości blokowania i blokady intencyjne. Dla synchronizacji odczytów i zapisów wielowersyjna metoda znaczników czasowych dla pojedynczych zapytań (read consistency) i dla całych transakcji (transaction consistency). Dla eliminacji anomalii lost update metoda first committer wins. Dla zapewnienia pełnej uszeregowalności blokady wyłączne poprzedzające operację odczytu (klauzula FOR UPDATE).

Anomalie w trybie serializable Anomalia typu skrośny zapis (write skew) Transakcja T1 czyta daną x, a transakcja T2 odczytuje daną y. Następnie T1 modyfikuje wartość danej y, a transakcja T2 modyfikuje daną x. (x>y) r1[x=200], r2[y=100], w1[y=180], w2[x=150],... 1. Historia sekwencyjna T1 T2: x=200, y=180; x > y 2. Historia sekwencyjna T2 T1: x=150, y=100; x > y 3. Historia współbieżna T1 T2: x=150, y=180; x < y!!! Transakcja T1 select * from zespoły where id_zesp=1; if exists then insert into pracownicy values(100, Nowak,..., 1); Transakcja T2 select count(*) into :liczba from pracownicy where id_zesp=1; if liczba = 0 then delete from zespoły where id_zesp = 1;

Typy blokad w DB2 IN intencyjny brak operacji NS następny klucz - współdzielona U - modyfikacja NX - następny klucz - wyłączna Z silna wyłączna NW - następny klucz słaba wyłączna W słaba wyłączna założona /żądana IN IS NS S IX SIX U NX X Z NW W IN tak tak tak tak tak tak tak tak tak nie tak tak IS tak tak tak tak tak tak tak tak tak nie tak tak NS tak tak tak tak tak tak tak nie nie nie nie nie S tak tak tak tak nie nie tak tak nie nie tak nie IX tak tak nie nie tak nie nie nie nie nie nie nie SIX tak tak nie nie nie nie nie nie nie nie nie nie U tak tak tak tak nie nie nie nie nie nie nie nie NX tak nie tak nie nie nie nie nie nie nie nie nie X tak nie nie nie nie nie nie nie nie nie nie nie Z nie nie nie nie nie nie nie nie nie nie nie nie NW tak nie tak nie nie nie nie nie nie nie nie tak W tak nie nie nie nie nie nie nie nie nie tak nie

Zakładanie blokad w DB2 Poziom izolacji Odczyt Intencja zapisu Zapis RR S U X RS IS/NS IX/U IX/X CS IS/NS IX/U IX/X UR IN IX/U IX/X

Projekt poprawnego modelu zarządzania współbieżnością transakcji Prawidłowa synchronizacja transakcji wymaga od programistów: Określenia wymagań aplikacji odnośnie poziomu poprawności danych i efektywności przetwarzania Ustalenia właściwego trybu izolacji transakcji Dla zastosowań wymagających pełnej poprawności danych włączenia dodatkowych mechanizmów synchronizacji lub zastosowania odpowiedniej struktury przepływu sterowania w aplikacjach