Zarządzanie transakcjami
Wykład
S. Kozielski
Zarządzanie transakcjami
Transakcja jedna lub więcej operacji na bazie danych
stanowiących pewną logiczną całość.
Przykład transakcji: rezerwacja miejsc
R: begin
znajdz wolne miejsce m;
rezerwuj znalezione miejsce dla
pasażera p
end;
Przykład transakcji: przeniesienie kwoty K z konta X na konto Y
T:begin
read X;
X:=X-K;
write X;
read Y;
Y:=Y+K;
write Y
end;
Pożądane własności transakcji
1. Atomowość transakcja musi zostać wykonana w
całości, albo wszystkie efekty jej częściowego
wykonania muszą zostać wycofane
2. Spójność transakcja nie może naruszać więzów
spójności
3. Izolacja transakcja musi działać w pełnej izolacji od
innych transakcji.
4. Trwałość wynik zakończonej transakcji nie może
zostać utracony.
Środowisko realizacji transakcji
Serwer
BD
SZBD
Aplikacja 1 Aplikacja 2 Aplikacja 3
stacja 1 stacja 2 stacja 3
Zagrożenia dla poprawnej realizacji transakcji
" Współbieżne wykonywanie wielu transakcji na tych
samych danych
" Zdarzenia losowe: awaria zasilania, awaria systemu
komputerowego (komputer, sieć), uszkodzenie dysku
z bazą danych
" Błędy w oprogramowaniu (aplikacje, SZBD)
zawieszanie się programów
Harmonogram transakcji
Uszeregowanie (kolejność wykonania)
wszystkich operacji elementarnych
pewnego zbioru transakcji realizowanych
współbieżnie
Problemy ze współbieżnym wykonaniem transakcji
Współbieżny harmonogram dwóch transakcji rezerwacji miejsc
R1 - rezerwacja biletu 1 R2 - rezerwacja biletu 2
znajdz wolne miejsce m0
znajdz wolne miejsce m0
rezerwuj miejsce m0 dla pasażera p1
rezerwuj miejsce m0 dla pasażera p2
(H1) Harmonogram szeregowy
T1 T2
read A
A:=A-100
write A
read B
B:=B+100
write B
read B
A0=1000 A=900 B:=B-200
B0=2000 B=1900 write B
C0=3000 C=3200 read C
C:=C+200
Ł0=6000 Ł=6000 write C
(H2) Harmonogram szeregowalny
T1 T2
read A
read B
A:=A-100
B:=B-200
write A
write B
read B
read C
B:=B+100
C:=C+200
write B
write C
(H3) Harmonogram nieszeregowalny
T1 T2
read A
A:=A-100
read B
write A
B:=B-200
read B
write B
B:=B+100
read C
write B
C:=C+200
write C
Mechanizm blokowania dostępu do danych
LOCK
UNLOCK
Efekty wykonania LOCK X
1) sukces (udało się nałożyć blokadę) transakcja uzyskuje
prawo dostępu do jednostki X,
2) niepowodzenie (nie udało się nałożyć blokady) brak prawa
dostępu:
- zawieszenie transakcji żądającej,
lub
- kontynuacja transakcji żądającej bez prawa dostępu do X.
Ziarnistość (granulacja) blokowania
:
- wiersz (rekord),
- cała tablica,
- cała baza danych
T1 T2
lock A
read A
A:=A-100
lock B
write A
read B
unlock A
B:=B-200
lock B
write B
Zawieszenie T1
unlock B
read B
lock C
B:=B+100
read C
write B
C:=C+200
unlock B
write C
unlock C
U: begin V: begin
lock Y; lock X;
read Y; read X;
unlock Y; unlock X;
lock X; lock Y;
read X; read Y;
X:=X+Y; Y:=Y+X;
write X; write Y;
unlock X unlock Y
end; end;
X0 =20, Y0 =30
H1: U;V: X=50, Y=80
H2: V;U: X=70, Y=50
U V
lock Y
read Y
unlock Y
lock X
read X
unlock X
lock Y
read Y
Y:=Y+X
write Y
unlock Y
lock X
read X
X:=X+Y
write X
unlock X
H3: X=50, Y=50
Dwufazowy protokół blokowania
Transakcja wypełnia protokół dwufazowy, jeśli wszystkie
operacje blokowania występują przed pierwszą operacją
odblokowania.
Twierdzenie
Dowolny harmonogram transakcji dwufazowych jest
harmonogramem szeregowalnym.
U V
lock Y
read Y
lock X
unlock Y
lock X
read X
X:=X+Y
Zawieszenie transakcji V
write X
unlock X
read X
lock Y
unlock X
read Y
Y:=Y+X
write Y
unlock Y
H4 a" H1
Rozważmy dwie transakcje
T1: begin A:=A-100; B:=B+100 end;
T2: begin A:=1.05*A; B:=1.05*B end;
Niech: A0=1000, B0=1000
Rozważmy harmonogramy szeregowe:
H1: T1;T2 wtedy wartości końcowe wynoszą A=945, B=1155
H2: T2;T1 wtedy wartości końcowe wynoszą A=950, B=1150
W obu przypadkach bank wpłaca klientom sumę odsetek = 100
Rozważmy harmonogram H3:
T1: A:=A-100 B:=B+100
T2: A=1.05*A B=1.05*B
Wynik jest identyczny z H1
Rozważmy harmonogram H4:
T1: A:=A-100 B:=B+100
T2: A:=1.05*A B:=1.05*B
wtedy wartości końcowe wynoszą A = 945, B = 1150
Czyli bank wpłaca klientom sumę odsetek = 95 błąd !
Harmonogram H4 może być zrealizowany, jeśli transakcje
T1 i T2 nie wypełniają protokołu dwufazowego.
Przy zachowaniu protokołu dwufazowego otrzymamy
harmonogram H5, który jest równoważny H3:
T1 T2
lock A
read A
A:= A 100
write A
lock B
unlock A
lock A
read A
A:=A * 1.05
write A
lock B
Zawieszenie transakcji T2
read B
B:= B + 100
write B
unlock B
unlock A
read B
B:= B * 1.05
write B
unlock B
Blokada wzajemna (zakleszczenie) transakcji
U V
lock Y
read Y
lock X
lock X
read X
Zawieszenie transakcji U
lock Y
Zawieszenie transakcji V
Blokada wzajemna (zakleszczenie) transakcji
Unikanie blokady wzajemnej
" Metoda przydziału globalnego
lock X,Y,Z &
" Metoda blokady hierarchicznej
Ustalenie hierarchii zasobów i nakładanie blokad tylko
w kolejności wyznaczonej przez tę hierarchię
Metoda przydziału globalnego
U V
lock X,Y
read Y
lock X,Y
unlock Y
read X
X:=X+Y
Zawieszenie transakcji V
write X
unlock X
read X
unlock X
read Y
Y:=Y+X
write Y
unlock Y
Metoda blokady hierarchicznej
U V
lock X
lock Y
read Y
lock X
unlock Y
read X
X:=X+Y
Zawieszenie transakcji V
write X
unlock X
read X
lock Y
unlock X
read Y
Y:=Y+X
write Y
unlock Y
Graf oczekiwania
X
U V
Y
Inny model blokowania
RLOCK (read-lock) blokowanie do odczytu (blokada
współdzielona - shared),
WLOCK (write-lock) blokowanie do zapisu (blokada
wyłączna - exclusive).
UNLOCK
Wyróżnianie transakcji w programach
1) Domyślne !każda instrukcja SQL jest transakcją,
2) Jawne:
[BEGIN TRANSACTION] - początek,
COMMIT [TRANSACTION] - koniec
zatwierdzenie transakcji,
ROLLBACK [TRANSACTION] - koniec
wycofanie transakcji.
Prowadzenie dziennika transakcji
Serwer
Log
SZBD
BD
Menedżer Transakcji
dziennik
transakcji
Aplikacja 2 Aplikacja 3
Aplikacja 1
stacja 2 stacja 3
stacja 1
T: begin
begin transaction;
find X;
if not found then rollback
else
begin
lock X;
get X;
X:=X-K;
write X;
find Y;
if not found then rollback
else
begin
lock Y;
get Y;
Y:=Y+K;
write Y;
commit
end
end
end;
Model dziennika z bezpośrednim zapisem do bazy danych
Stan dziennika po wycofaniu transakcji
Stan dziennika po awarii
Model dziennika z opóznionym zapisem do bazy danych
Rola bufora w procesie dostępu do bazy danych
Serwer
Program
X
Y
Bufor
Y
Y
X
X
BD
Punkty kontrolne (CHECKPOINT)
Wykonanie przerwania związanego z punktem kontrolnym:
dokończenie aktualnych operacji na bazie danych i/lub logu
przejście do obsługi przerwania
Obsługa przerwania (obsługa punktu kontrolnego):
zapis zawartości buforów na dysk (do bazy danych)
wpis do dziennika transakcji (logu) rekordu
Punkty kontrolne - przykład
Zawartość logu:
-----------awaria
Punkty kontrolne - przykład
Zawartość logu:
-----------awaria
Transakcje zakończone (bezpieczne): T2
Transakcje wymagające wycofania: T3, T5 (UNDO T3, T5)
Transakcje wymagające powtórzenia: T1, T4 (REDO T1, T4)
Algorytm odtwarzania spójnego stanu b. d. po awarii
1) Wszystkie transakcje wypełnione przed ostatnim punktem
kontrolnym uznawane są za zakończone
2) Wszystkie transakcje wypełnione (COMMIT) pomiędzy
ostatnim punktem kontrolnym a awarią są powtarzane
(REDO)
3) Wszystkie transakcje wykonywane do momentu awarii
(brak COMMIT) są wycofywane (UNDO ROLLBACK)
Wykorzystanie dziennika do ochrony bazy
danych - podsumowanie
1) Wycofanie transakcji z poziomu programu (aplikacji),
(niedostępność danych,...)
2) Wycofanie transakcji z poziomu SZBD,
(zakleszczenie transakcji, zawieszenie transakcji, ...)
3) Odtworzenie spójnego stanu b.d. po awarii i upadku
systemu
4) Odtworzenie b.d. i przywrócenie jej spójnego stanu po
zniszczeniu dysku z bazą danych (dziennik ocalał)
BACKUP
BD
Log
BACKUP
BD
RESTORE
Log
BD
Odtworzenie spójnego stanu b.d. po awarii dysku
BACKUP
BD
RESTORE
Log
ROLLFORWARD
BD
Mechanizmy blokad w SQL-u poziomy izolacji
Generalna zasada:
- zapis (modyfikacja) wiersz (rekord) blokowany jest
na wyłączność do końca transakcji,
- odczyt wybór rodzaju blokady i zakres
utrzymywania zależy od poziomu izolacji. Poziom
izolacji może ustalać programista:
SET TRANSACTION ISOLATION LEVEL izolacji>
Poziomy izolacji
Poziom izolacji Efekt niepożądany
READ UNCOMMITTED
brudny odczyt
READ COMMITTED
niepowtarzalny odczyt
REPEATABLE READ
fantom
SERIALIZABLE
Brudny odczyt:
T1: R(A), W(A), R(B), W(B), Abort
T2: R(A), W(A), C
Niepowtarzalny odczyt:
T1: R(A), R(A), W(A), C
T2: R(A), W(A), C
Kiedy są możliwe takie sytuacje?
Blokada na A jest zdejmowana zaraz po W(A)
(lub R(A) dla niepowtarzalnego odczytu)
nie jest utrzymywana do końca transakcji
Tryb dostępu
Jest ustawiany instrukcjąSET TRANSACTION
Przyjmuje 2 wartości:
READ ONLY
READ WRITE(domyślna)
Zazwyczaj przyjęcie poziomu izolacji
READ UNCOMMITTED
wymusza tryb dostępu READ ONLY
Wyszukiwarka
Podobne podstrony:
BD Wyklad 1 11
BD Wykład 4 11
BD Wykład 5 11
BD Wykład 2 11
BD Wykład 7 11
BD Wykład 3 11
BD Wykład 8 11
Wykład 11 stolarka okienna i drzwiowa
WYKŁAD 11
wyklad 11 psychosomatyka
PLC mgr wyklad 11 algorytmy
CHEMIA dla IBM Wyklad 8) 11 2013
Wyklad 11
Wyklad 11 stacj Genetyka i biotechnologie lesne
Stat wyklad2 11 na notatki
(Uzupełniający komentarz do wykładu 11)
wyklad10 11 ME1 EiT
WYKŁAD 11 2
więcej podobnych podstron