BD Wykład 6 2011

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

ż

e

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

Wyszukiwarka

Podobne podstrony:
BD Wykład 3 2011
BD Wykład 4 2011
BD Wykład 8 2011
BD Wykład 5 2011
BD Wykład 7 2011
BD Wyklad 1 2011
BD Wykład 2 2011
BD Wykład 3 2011
BD Wykład 4 2011
perswazja wykład2 2011 Zasady skutecznej perswazji Petty & Cacioppo

więcej podobnych podstron