Bazy danych Transakcje

Bazy danych Transakcje Wst p Poj cia podstawowe: Transakcja - sekwencja (uporz dkowany zbiór) logicznie powi zanych operacji na bazie danych, która przeprowadza baz danych z jednego stanu spójnego w inny stan spójny. spójny. W!a"no"ci transakcji: Atomowo"& - (ang. atomicity) atomicity) zbiór operacji wchodz cych w sk!ad transakcji jest niepodzielny; niepodzielny; albo zostan wykonane wszystkie operacje transakcji albo (adna. Spójno"& (ang. consistency) consistency) - transakcja pozostawia baz danych w stanie spójnym. spójnym. Izolacja (ang. isolation) isolation) - transakcje s od siebie logicznie odseparowane. Mog oddzia!ywa& na siebie w taki sposób jak gdyby by!y wykonywane sekwencyjnie. sekwencyjnie.

wzajemnie

Trwa!o"& (ang. durability) durability) - wyniki zatwierdzonych transakcji nie mog zosta& utracone, utracone, niezale(nie od awarii systemu. 2

Bazy danych Transakcje Wst p Z danej bazy danych korzysta wielu u(ytkowników. u(ytkowników. Ze wzgl du na wydajno"& systemu jest wa(ne, aby kilka transakcji by!o wykorzystanych wspó!bie(nie. wspó!bie(nie. System zarz dzania bazy danych musi wi c sprawowa& kontrol nad przebiegiem transakcji, nie dopuszczaj c do wzajemnej blokady poszczególnych transakcji lub do stanu niezgodnego. niezgodnego. Ka(dy z programów u(ytkowych wykonuje operacj odczytu, odczytu, zapisuj c w odpowiednich obszarach pami ci operacyjnej warto"ci pobrane z bazy danych. W przypadku operacji zapisu okre"lona warto"& z pami ci operacyjnej jest przepisywana do bazy bazy danych, w miejsce nieaktualnej warto"ci. Sytuacje konfliktowe pojawiaj si , kiedy dwie transakcje T1 i T2, T2, aby dokona& operacji zapisu b d dokonywa!y operacji na tym samym elemencie bazy danych.

3

Bazy danych Transakcje Wst p Zako czenie transakcji: •

Zatwierdzenie – sprawdzenie ogranicze3, zwolnienie blokad, zapisanie wszystkich zmian.



Wycofanie – porzucenie zmian, zwolnienie blokad.

Zatwierdzenie:

COMMIT

Punkt bezpiecze3stwa:

SAVEPOINT nazwa_punktu

Wycofanie: Wycofanie:

ROLLBACK [ WORK ] [TO [ SAVEPOINT ] nazwa_punktu ]

4

Bazy danych Transakcje Wst p Spójno bazy danych: Baza danych jest spójna je(eli jej stan jest zgodny ze mo(liwym stanem reprezentowanego przez ni fragmentu "wiata rzeczywistego. Baza danych jest spójna je"li spe!nione spe!nione s wszystkie ograniczenia referencyjne i integralno"ciowe. integralno"ciowe.

Zagro enia spójno ci bazy danych: • awarie sprz tu komputerowego i oprogramowania, • utrata danych w wyniku uszkodzenia pami ci masowej, • u(ytkownicy, • wspó!bie(ny dost p do danych.

5

Bazy danych Transakcje Konflikty zapiszapis-zapis -> Utrata aktualizacji (lost update) update) Sytuacja taka zdarza si , gdy transakcja T2 zapisuje warto"& zmienion przez transakcj T1 ignoruj c modyfikacje dokonane przez ni .

6

Bazy danych Transakcje Konflikty zapiszapis-odczyt -> Brudny odczyt (dirty read) read) Sytuacja taka zdarza si , gdy transakcja T2 odczytuje warto"& zmienion przez transakcj T1, T1, po czym transakcja zostaje anulowana z dowolnego powodu. Transakcja T2 odczyta!a warto"& niew!a"ciw , niepotwierdzon , wszystkie modyfikacje dokonane przez transakcje T1 b d bowiem anulowane. Wcze"niej jednak transakcja T2 dokona!a odczytu warto"ci x zmienionej przez T1. T1.

7

Bazy danych Transakcje Konflikty zapiszapis-odczyt -> Niepowtarzalny odczyt (fuzzy read) read) Sytuacja taka zdarza si , gdy transakcja T1 odczytuje warto"& x,, nast pnie transakcja T2 zmienia t warto"&, a T1 ponownie odczytuje j .

8

Bazy danych Transakcje Konflikty zapiszapis-odczyt -> Fantomy (phantom read) read) Sytuacja taka zdarza si , gdy transakcja T1 odczytuje warto"& x,, nast pnie transakcja T2 dodaje now krotk , a T1 ponownie odczytuje zawarto"& bazy danych.

9

Bazy danych Transakcje Metody unikania konfliktów Poziomy izolacji. READ UNCOMMITED – najni(szy poziom, zezwala si na czytanie niepotwierdzonych danych. danych. READ COMMITED – aplikacja mo(e odczytywa& tylko potwierdzone dane. W!a"ciwy poziom poziom izolacji np. dla procedur raportuj cych, dla których istotnych jest chwilowy chwilowy stan bazy danych. REAPEATABLE READ – blokuje dost p do wszystkich odczytywanych danych. W!a"ciwy poziom poziom izolacji dla procedur odczytu i aktualizacji danych. SERIALIZABLE – blokuje dost p do tabeli. aktualizacji danych.

W!a"ciwy poziom izolacji dla procedur odczytu i

10

Bazy danych Transakcje Metody unikania konfliktów Poziomy izolacji.

Dirty read

Fuzzy read

Phantom read

READ UNCOMMITED

Mo liwy

mo liwy

mo liwy

READ COMMITED

nie wyst puje

mo liwy

mo liwy

REPEATABLE READ

nie wyst puje

nie wyst puje

mo liwy

SERIALIZABLE

nie wyst puje

nie wyst puje

nie wyst puje 11

Bazy danych Transakcje Metody unikania konfliktów Tryby dost pu transakcji. READ ONLY - transakcja nie zawiera (adnych polece3 modyfikuj cych stan bazy danych. SET TRANSACTION READ ONLY

READ WRITE - transakcja mo(e zawiera& polecenia modyfikuj ce stan bazy danych. danych. SET TRANSACTION READ WRITE

12

Bazy danych Transakcje Metody unikania konfliktów W89czanie poziomów izolacji: READ COMMITED (poziom domy"lny) SET TRANSACTION ISOLATION LEVEL READ COMMITTED ALTER SESSION SET ISOLATION LEVEL = READ COMMITTED SERIALIZABLE SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ALTER SESSION SET ISOLATION LEVEL = SERIALIZABLE w pliku inicjalizacyjnym: inicjalizacyjnym: SERIALIZABLE = true

13

Bazy danych Transakcje Metody unikania konfliktów Rodzaje blokad na poziomie tabeli: RS

-

Intencjonalna wspó!dzielona, wspó!dzielonym. wspó!dzielonym.

odpowiada

zablokowaniu

wybranych

krotek

w

trybie

SELECT ... FOR UPDATE RX - Intencjonalna wy! czna, odpowiada zablokowaniu wybranych krotek w trybie wy! cznym. cznym. INSERT, UPDATE, DELETE S - Wspó!dzielona,, odpowiada zablokowaniu wszystkich krotek w trybie wspó!dzielonym. wspó!dzielonym. LOCK TABLE ... IN SHARE MODE SRX - Wspó!dzielona,, odpowiada zablokowaniu wszystkich krotek w trybie wspó!dzielonym i wybranych krotek w trybie wy! cznym LOCK TABLE ... IN SHARE ROW EXCLUSIVE MODE X - Wy! czna,, odpowiada zablokowaniu wszystkich krotek w trybie wy! cznym. LOCK TABLE ... IN EXCLUSIVE MODE

14

Bazy danych Transakcje Metody unikania konfliktów Wzajemne wykluczanie: wykluczanie: przyznawanie prawa wy! czno"ci do danego obiektu okre"lonej transakcji. Ka(da z transakcji mo(e uzyska& prawo wy! czno"ci do danego obiektu, obiektu, ( daj c blokady tego obiektu. Je"li dany obiekt jest zablokowany przez pewn transakcj to (adna (adna inna transakcja nie uzyska dost pu do tego obiektu do chwili odblokowania obiektu. Odblokowanie obiektu jest równoznaczne z utrat wy! czno"ci dost pu do tego obiektu. Transakcje oczekuj ce na dost p do zablokowanego obiektu mo(na umieszcza& w kolejce transakcji obs!ugiwanych zgodnie z kolejk zg!osze3. Dzi ki temu rozwi zaniu mo(na unikn & utraty aktualizacji, aktualizacji, ale czasami prowadzi do zjawiska impasu. impasu.

15

Bazy danych Transakcje Metody unikania konfliktów Impas – zjawisko, które czasami mo(e powsta& w wyniku dzielenia danych zgodnie z zasad wzajemnego wykluczania Przyk!ad:

T1

T2

1

Zablokuj (A)

-

2

-

Zablokuj (B)

3

Zablokuj (B)

-

4

Oczekiwanie

Zablokuj (A)

5

-

Oczekiwanie

6

-

16

Bazy danych Transakcje Metody unikania konfliktów Metody rozwi9zywania problemu impasu: Zapobieganie powstawania impasów - kiedy ( danie przyznania blokady nie mo(e by& spe!nione, system wykonuje pewien test dotycz cy dwóch transakcji. Wykrywanie powsta!ych impasów - dopuszcza si , by transakcje oczekiwa!y na odblokowanie interesuj cych je danych. Pewn transakcj anuluje si dopiero wtedy, wtedy, gdy wyst pi impas.

17

Bazy danych Transakcje Metody unikania konfliktów Zapobieganie powstawania impasów – unika si impasu poprzez wykonanie testu dotycz cy dwóch transakcji: tej, która ( da blokady (T2 ). Je(eli (T2)) i tej która dysponuje blokad w danej chwili (T1 (T1). wynik testu jest pozytywny, zezwala si transakcji T2 oczekiwa& na odblokowanie interesuj cego j obiektu, w przeciwnym przypadku jedna z dwóch transakcji jest anulowana, jej wykonanie zostaje powtórne rozpocz te. Transakcja taka nie jest usuwana z systemu zarz dzania baz danych, lecz jest jedynie cofana ( anulowanie transakcji oznacza usuni cie zmian wprowadzonych przez ni bez usuni cia jej z systemu). Test: ka(dej transakcji przyporz dkowuje si okre"lony priorytet, warto"& warto"& t zapisujemy w postaci priorytetu (T1 ). Transakcja T2 mo(e oczekiwa& na odwo!anie blokady przez transakcj T1 (T1). wtedy i tylko wtedy gdy priorytet T2 < priorytetu T1. T1. Stosuj c t metod mo(na spowodowa&, (e pewna transakcja jest anulowana wielokrotnie, wielokrotnie, jej wykonanie system odk!ada ci gle na póAniej. Aby unikn & tej sytuacji sytuacji stosuje si metod znaczników transakcji. transakcji.

18

Bazy danych Transakcje Metody unikania konfliktów Metoda znaczników transakcji: transakcji: w chwili pojawienia si danej transakcji przypisuje si jej pewien pewien unikalny numer porz dkowy - znacznik. Mo(e to by& np. warto"& z zegara systemowego. Chodzi o to, aby transakcje wcze"niejsze mia!y pierwsze3stwo przed transakcjami transakcjami póAniejszymi. Wraz z metod znaczników mo(emy stosowa& równocze"nie technik wyw!aszczania lub technik bez wyw!aszczania: wyw!aszczania: Technika bez wyw!aszczenia: wyw!aszczenia: kiedy transakcja T2 ( da blokady obiektu zablokowanego przez T1 (T1 by!a wcze"niej), to T2 mo(e czeka& na odblokowanie obiektu, w przeciwnym przypadku T2 jest anulowana (jej znacznik nie zmienia si ). Technika wyw!aszczania: wyw!aszczania: je"li T2 jest póAniejsza ni( T1, T1, to oczekuje na odblokowanie obiektu, je"li nie to T2 jest anulowana.

19

Bazy danych Transakcje Metody unikania konfliktów Wykrywanie powsta!ych impasów - dopuszcza si , by transakcje oczekiwa!y na odblokowanie interesuj cych je danych. Pewn transakcj anuluje si dopiero wtedy, wtedy, gdy wyst pi impas. impas. Przewa(nie anuluje si transakcj , która rozpocz !a si najpóAniej. najpóAniej. Zjawisko impasu wyst puje bardzo rzadko (1 na 1000 transakcji), dlatego bardziej ekonomiczne ekonomiczne jest stosowanie wykrywania impasów.

20

Bazy danych Transakcje Metody unikania konfliktów Blokowanie dwufazowe - blokada wy! czno"ci nie jest konieczna w przypadku kilku równoczesnych równoczesnych operacji odczytu. Blokowanie dwufazowe jest wersj operacji blokowania blokowania umo(liwiaj c synchronizacj operacji odczytu i zapisu. W przypadku ka(dej transakcji, transakcji, wszystkie operacje ( dania blokad powinny poprzedza& wszystkie operacje odwo!ania blokad. blokad. Wewn trz transakcji mo(na wyró(ni& faz uzyskiwania i odwo!ywania blokad. Metoda ta nie wykrywa pojawienia si impasu. Metoda ta opiera si na dwóch blokadach: dzielonej - umo(liwiaj cej równoczesny odczyt danych i blokady wy! czno"ci. czno"ci. •

zanim transakcja dokona odczytu warto"ci x, musi uzyska& blokad dzielon x



zanim transakcja dokona zapisu warto"ci x, musi uzyska& blokad wy! czno"ci x



po zako3czeniu transakcji (aden z elementów nie zostaje zablokowany zablokowany

Transakcja dwufazowa: dwufazowa: Faza rozwijania: rozwijania: transakcja ( da poszczególnych blokad, które s jej potrzebne, wykonuje pewne obliczenia, modyfikuje dane z bazy, po czym rozpoczyna si faza zwalniania. Faza zwalniania: zwalniania: transakcja odwo!uje poszczególne blokady. 21