background image

Zarz

ą

dzanie transakcjami

Wykład 

S. Kozielski

background image

Zarz

ą

dzanie transakcjami

Transakcja – jedna lub wi

ę

cej operacji na bazie danych 

stanowi

ą

cych pewn

ą

logiczn

ą

cało

ść

.

Przykład transakcji: rezerwacja miejsc

R: begin

znajd

ź

wolne miejsce m;

rezerwuj znalezione miejsce dla 

pasa

ż

era p

end;

background image

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;

background image

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

ż

zosta

ć

utracony. 

background image

Ś

rodowisko realizacji transakcji

Serwer

SZBD

Aplikacja 1

BD

Aplikacja 2

Aplikacja 3

stacja 1

stacja 2

stacja 3

background image

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

background image

Harmonogram transakcji

Uszeregowanie (kolejno

ść

wykonania) 

wszystkich operacji elementarnych 

pewnego zbioru transakcji realizowanych 

współbie

ż

nie

background image

Problemy ze współbie

ż

nym wykonaniem transakcji

Współbie

ż

ny harmonogram dwóch transakcji rezerwacji miejsc

rezerwuj miejsce m

0

dla pasa

ż

era p2

rezerwuj miejsce m

0

dla pasa

ż

era p1

znajd

ź

wolne miejsce m

0

znajd

ź

wolne miejsce m

0

R2 - rezerwacja biletu 2

R1 - rezerwacja biletu 1

background image

(H1) Harmonogram szeregowy

write C

Σ

0

=6000

Σ

=6000

C:=C+200

read C

C

0

=3000

C=3200

write B

B

0

=2000

B=1900

B:=B-200

A

0

=1000

A=900

read B

write B

B:=B+100

read B

write A

A:=A-100

read A

T2

T1

background image

(H2) Harmonogram szeregowalny

write C

write B

C:=C+200

B:=B+100

read C

read B

write B

write A

B:=B-200

A:=A-100

read B

read A

T2

T1

background image

(H3) Harmonogram nieszeregowalny

write C

C:=C+200

write B

read C

B:=B+100

write B

read B

B:=B-200

write A

read B

A:=A-100

read A

T2

T1

background image

Mechanizm blokowania dost

ę

pu do danych

LOCK <jednostka danych>

UNLOCK <jednostka danych>

background image

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.

background image

Ziarnisto

ść

(granulacja) blokowania

<jednostka danych>:

- wiersz (rekord),

- ca

ł

a tablica,

- cała baza danych

background image

unlock A

B:=B-200

read B

lock C

write B

C:=C+200

unlock B

lock B

lock A

unlock C

write C

read C

B:=B+100

unlock B

write B

Zawieszenie T1’

lock B

read B

write A

A:=A-100

read A

T2’

T1’

background image

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; 

X

0

=20, Y

0

=30

H1: U;V:   X=50,  Y=80
H2: V;U:   X=70,  Y=50

background image

lock Y

read Y

lock X

read X

unlock X

lock X

lock Y

H3:  X=50,  Y=50

write X

X:=X+Y

unlock Y

write Y

Y:=Y+X

unlock X

read X

unlock Y

read Y

V

U

background image

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.

background image

read X

X:=X+Y

read X

lock Y

Y:=Y+X

write Y

unlock Y

unlock Y

lock Y

H4 

H1

read Y

unlock X

unlock X

write X

lock X

Zawieszenie transakcji V’

lock X

read Y

V’

U’

background image

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: A

0

=1000, B

0

=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

background image

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:

background image

unlock B

lock A

read A

Zawieszenie transakcji T2

read B

unlock B

unlock A

read B

write A

lock A

write B

B:= B * 1.05

write B

B:= B + 100

lock B

write A

A:=A * 1.05

unlock A

lock B

A:= A – 100

read A

T2

T1

background image

Blokada wzajemna (zakleszczenie) transakcji

lock Y

Zawieszenie transakcji V’

lock X

lock Y

Blokada wzajemna (zakleszczenie) transakcji

read X

Zawieszenie transakcji U’

lock X

read Y

V’

U’

background image

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

ę

background image

Metoda przydziału globalnego

read X

X:=X+Y

read X

Y:=Y+X

write Y

unlock Y

lock X,Y

read Y

unlock X

unlock X

write X

Zawieszenie transakcji V’

unlock Y

lock X,Y

read Y

V

U

background image

Metoda blokady hierarchicznej

read X

X:=X+Y

read X

lock Y

Y:=Y+X

write Y

unlock Y

lock X

lock X

read Y

unlock X

unlock X

write X

Zawieszenie transakcji V’

unlock Y

read Y

lock Y

V

U

background image

Graf oczekiwania

U’

V’

X

Y

background image

Inny model blokowania

RLOCK (read-lock) – blokowanie do odczytu (blokada 

współdzielona - shared),

WLOCK (write-lock) – blokowanie do zapisu (blokada 

wył

ą

czna - exclusive).

UNLOCK

background image

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.

background image

Prowadzenie dziennika transakcji

Serwer

SZBD

Mened

ż

er Transakcji

Aplikacja 1

BD

Aplikacja 2

Aplikacja 3

stacja 1

stacja 2

stacja 3

Log

dziennik 

transakcji

background image

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;

background image

Model dziennika z bezpo

ś

rednim zapisem do bazy danych

<

T

i

, start>

<T

i

, X

adres

, X

stara_warto

ść

, X

nowa_warto

ść

<T

i

, Y

adres

, Y

stara_warto

ść

, Y

nowa_warto

ść

<T

i

, commit>

background image

Stan dziennika po wycofaniu transakcji

<

T

i

, start>

<T

i

, X

adres

, X

stara_warto

ść

, X

nowa_warto

ść

<T

i

, rollback>

background image

Stan dziennika po awarii

<

T

i

, start>

<T

i

, X

adres

, X

stara_warto

ść

, X

nowa_warto

ść

background image

Model dziennika z opó

ź

nionym zapisem do bazy danych

<

T

i

, start>

<T

i

, X

adres

, X

nowa_warto

ść

<T

i

, Y

adres

, Y

nowa_warto

ść

<T

i

, commit>

background image

Rola bufora w procesie dost

ę

pu do bazy danych

Program

BD

Serwer

X
Y

Y

X

Y

X

Bufor

background image

Punkty kontrolne (CHECKPOINT)

Wykonanie przerwania zwi

ą

zanego z punktem kontrolnym:

– doko

ń

czenie aktualnych operacji na bazie danych i/lub logu

– przej

ś

cie do obsługi przerwania

Obsługa przerwania (obsługa punktu kontrolnego):

– zapis zawarto

ś

ci buforów na dysk (do bazy danych)

– wpis do dziennika transakcji (logu) rekordu <CHECKPOINT>

background image

Punkty kontrolne - przykład

Zawarto

ść

logu:

<T1, start>

<T2, start>

<T3, start>

<T2, commit>

<CHECKPOINT>

<T4, start>

<T1, commit>

<T5, start>

<T4, commit>

-----------awaria

background image

Punkty kontrolne - przykład

Zawarto

ść

logu:

<T1, start>
<T2, start>
<T3, start>
<T2, commit>
<CHECKPOINT>
<T4, start>
<T1, commit>
<T5, start>
<T4, commit>
-----------awaria

Transakcje zako

ń

czone (bezpieczne): T2

Transakcje wymagaj

ą

ce wycofania: T3, T5      (UNDO T3, T5)

Transakcje wymagaj

ą

ce powtórzenia: T1, T4  (REDO T1, T4)

background image

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)

background image

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

background image

BD

Log

BACKUP

background image

BD

Log

BACKUP

RESTORE

BD

background image

Odtworzenie spójnego stanu b.d. po awarii dysku

BD

Log

BACKUP

RESTORE

ROLLFORWARD

BD

background image

Mechanizmy blokad w SQL-u – poziomy izolacji

Generalna zasada:

- zapis (modyfikacja) – wiersz (rekord) blokowany jest 
na wył

ą

czno

ść

do ko

ń

ca transakcji,

- odczyt – wybór rodzaju blokady i zakres 
utrzymywania zale

ż

y od poziomu izolacji. Poziom 

izolacji mo

ż

e ustala

ć

programista:

SET TRANSACTION ISOLATION LEVEL <poziom

izolacji>

background image

Poziomy izolacji

SERIALIZABLE

fantom

REPEATABLE READ

niepowtarzalny odczyt

READ COMMITTED

brudny odczyt

READ UNCOMMITTED

Efekt niepo

żą

dany

Poziom izolacji

background image

Brudny odczyt:

T1: 

R(A), W(A),   

R(B), W(B), Abort

T2:

R(A), W(A), C

T1:

R(A),  

R(A), W(A), C

T2:

R(A), W(A), C

Niepowtarzalny odczyt:

background image

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

background image

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

background image