Wstp Pojcia podstawowe: Transakcja - sekwencja (uporzdkowany zbiór) logicznie powizanych operacji na bazie danych, która przeprowadza baz danych z jednego stanu spójnego w inny stan spójny. W!a"no"ci transakcji: Atomowo"& - (ang. atomicity) ) zbiór operacji wchodzcych w sk!ad transakcji jest niepodzielny; ; albo zostan wykonane wszystkie operacje transakcji albo (adna. Spójno"& (ang. consistency) - transakcja pozostawia baz danych w stanie spójnym. Izolacja (ang. isolation) - transakcje s od siebie logicznie odseparowane. Mog wzajemnie oddzia!ywa& na siebie w taki sposób jak gdyby by!y wykonywane sekwencyjnie. Trwa!o"& (ang. durability) - wyniki zatwierdzonych transakcji nie mog zosta& utracone,, niezale(nie od awarii systemu. 2
Wstp Z danej bazy danych korzysta wielu u(ytkowników.. Ze wzgldu na wydajno"& systemu jest wa(ne, aby kilka transakcji by!o wykorzystanych wspó!bie(nie.. System zarzdzania bazy danych musi wic sprawowa& kontrol nad przebiegiem transakcji, nie dopuszczajc do wzajemnej blokady poszczególnych transakcji lub do stanu niezgodnego. Ka(dy z programów u(ytkowych wykonuje operacj odczytu,, zapisujc w odpowiednich obszarach pamici operacyjnej warto"ci pobrane z bazy danych. W przypadku operacji zapisu okre"lona warto"& z pamici operacyjnej jest przepisywana do bazy danych, w miejsce nieaktualnej warto"ci. Sytuacje konfliktowe pojawiaj si, kiedy dwie transakcje T1 i T2,, aby dokona& operacji zapisu bd dokonywa!y operacji na tym samym elemencie bazy danych. 3
Wstp Zakoczenie transakcji: Zatwierdzenie sprawdzenie ogranicze3, zwolnienie blokad, zapisanie wszystkich zmian. Wycofanie porzucenie zmian, zwolnienie blokad. Zatwierdzenie: Punkt bezpiecze3stwa: COMMIT SAVEPOINT nazwa_punktu Wycofanie: ROLLBACK [ WORK ] [TO [ SAVEPOINT ] nazwa_punktu ] 4
Wstp 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 s wszystkie ograniczenia referencyjne i integralno"ciowe. Zagro enia spójnoci bazy danych: awarie sprztu komputerowego i oprogramowania, utrata danych w wyniku uszkodzenia pamici masowej, u(ytkownicy, wspó!bie(ny dostp do danych. 5
Konflikty zapis-zapis -> Utrata aktualizacji (lost update) Sytuacja taka zdarza si, gdy transakcja T2 zapisuje warto"& zmienion przez transakcj T1 ignorujc modyfikacje dokonane przez ni. 6
Konflikty zapis-odczyt -> Brudny odczyt (dirty read) Sytuacja taka zdarza si, gdy transakcja T2 odczytuje warto"& zmienion przez transakcj T1,, po czym transakcja zostaje anulowana z dowolnego powodu. Transakcja T2 odczyta!a warto"& niew!a"ciw, niepotwierdzon, wszystkie modyfikacje dokonane przez transakcje T1 bd bowiem anulowane. Wcze"niej jednak transakcja T2 dokona!a odczytu warto"ci x zmienionej przez T1. 7
Konflikty zapis-odczyt -> Niepowtarzalny odczyt (fuzzy read) Sytuacja taka zdarza si, gdy transakcja T1 odczytuje warto"& x,, nastpnie transakcja T2 zmienia t warto"&, a T1 ponownie odczytuje j. 8
Konflikty zapis-odczyt -> Fantomy (phantom read) Sytuacja taka zdarza si, gdy transakcja T1 odczytuje warto"& x,, nastpnie transakcja T2 dodaje now krotk, a T1 ponownie odczytuje zawarto"& bazy danych. 9
Poziomy izolacji. READ UNCOMMITED najni(szy poziom, zezwala si na czytanie niepotwierdzonych danych. READ COMMITED aplikacja mo(e odczytywa& tylko potwierdzone dane. W!a"ciwy poziom om izolacji np. dla procedur raportujcych, dla których istotnych jest chwilowy stan bazy danych. REAPEATABLE READ blokuje dostp do wszystkich odczytywanych danych. W!a"ciwy poziom izolacji dla procedur odczytu i aktualizacji danych. SERIALIZABLE blokuje dostp do tabeli. aktualizacji danych. W!a"ciwy poziom izolacji dla procedur odczytu i 10
Poziomy izolacji. Dirty read Fuzzy read Phantom read READ UNCOMMITED Mo liwy mo liwy mo liwy READ COMMITED nie wystpuje mo liwy mo liwy REPEATABLE READ nie wystpuje nie wystpuje mo liwy SERIALIZABLE nie wystpuje nie wystpuje nie wystpuje 11
Tryby dostpu transakcji. READ ONLY - transakcja nie zawiera (adnych polece3 modyfikujcych stan bazy danych. SET TRANSACTION READ ONLY READ WRITE - transakcja mo(e zawiera& polecenia modyfikujce stan bazy danych. SET TRANSACTION READ WRITE 12
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: SERIALIZABLE = true 13
Rodzaje blokad na poziomie tabeli: RS - Intencjonalna wspó!dzielona, odpowiada zablokowaniu wybranych wspó!dzielonym. SELECT... FOR UPDATE krotek w trybie RX - Intencjonalna wy!czna, odpowiada zablokowaniu wybranych krotek w trybie wy!cznym. INSERT, UPDATE, DELETE S - Wspó!dzielona,, odpowiada zablokowaniu wszystkich krotek w trybie wspó!dzielonym. LOCK TABLE... IN SHARE MODE SRX - Wspó!dzielona,, odpowiada zablokowaniu wszystkich 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 krotek w trybie wspó!dzielonym i 14
Wzajemne 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, (dajc blokady tego obiektu. Je"li dany obiekt jest zablokowany przez pewn transakcj to (adna inna transakcja nie uzyska dostpu do tego obiektu do chwili odblokowania obiektu. Odblokowanie obiektu jest równoznaczne z utrat wy!czno"ci dostpu do tego obiektu. oczekujce na dostp do zablokowanego obiektu mo(na umieszcza& w kolejce transakcji obs!ugiwanych zgodnie z kolejk zg!osze3. Dziki temu rozwizaniu mo(na unikn& utraty aktualizacji,, ale czasami prowadzi do zjawiska impasu. 15
Impas zjawisko, które czasami mo(e powsta& w wyniku dzielenia danych zgodnie z zasad wzajemnego wykluczania Przyk!ad: 1 2 3 4 5 6 T1 Zablokuj (A) - Zablokuj (B) Oczekiwanie - - T2 - Zablokuj (B) - Zablokuj (A) Oczekiwanie - 16
Metody rozwi9zywania problemu impasu: Zapobieganie powstawania impasów - kiedy (danie przyznania blokady nie mo(e by& spe!nione, system wykonuje pewien test dotyczcy dwóch transakcji. Wykrywanie powsta!ych impasów - dopuszcza si, by transakcje oczekiwa!y na odblokowanie interesujcych je danych. Pewn transakcj anuluje si dopiero wtedy, w gdy wystpi impas. 17
Zapobieganie powstawania impasów unika si impasu poprzez wykonanie testu dotyczcy dwóch transakcji: tej, która (da blokady (T2( T2) ) i tej która dysponuje blokad w danej chwili (T1( T1). Je(eli wynik testu jest pozytywny, zezwala si transakcji T2 oczekiwa& na odblokowanie interesujcego j obiektu, w przeciwnym przypadku jedna z dwóch transakcji jest anulowana, jej wykonanie zostaje powtórne rozpoczte. Transakcja taka nie jest usuwana z systemu zarzdzania baz danych, lecz jest jedynie cofana ( anulowanie transakcji oznacza usunicie zmian wprowadzonych przez ni bez usunicia jej z systemu). Test: ka(dej transakcji przyporzdkowuje si okre"lony priorytet, warto"& t zapisujemy w postaci priorytetu (T1( T1). Transakcja T2 mo(e oczekiwa& na odwo!anie blokady przez transakcj T1 wtedy i tylko wtedy gdy priorytet T2 < priorytetu T1. Stosujc t metod mo(na spowodowa&, (e pewna transakcja jest anulowana wielokrotnie,, jej wykonanie system odk!ada cigle na póaniej. Aby unikn& tej sytuacji stosuje si metod znaczników transakcji. 18
Metoda znaczników transakcji: w chwili pojawienia si danej transakcji przypisuje si jej pewien en unikalny numer porzdkowy - znacznik. Mo(e to by& np. warto"& z zegara systemowego. Chodzi o to, aby transakcje wcze"niejsze mia!y pierwsze3stwo przed transakcjami póaniejszymi. Wraz z metod znaczników mo(emy stosowa& równocze"nie technik wyw!aszczania lub technik bez wyw!aszczania: Technika bez 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: : je"li T2 jest póaniejsza ni( T1,, to oczekuje na odblokowanie obiektu, je"li nie to T2 jest anulowana. 19
Wykrywanie powsta!ych impasów - dopuszcza si, by transakcje oczekiwa!y na odblokowanie interesujcych je danych. Pewn transakcj anuluje si dopiero wtedy, w gdy wystpi impas. Przewa(nie anuluje si transakcj, która rozpocz!a si najpóaniej. Zjawisko impasu wystpuje bardzo rzadko (1 na 1000 transakcji), dlatego bardziej ekonomiczne ne jest stosowanie wykrywania impasów. 20
Blokowanie dwufazowe - blokada wy!czno"ci nie jest konieczna w przypadku kilku równoczesnych operacji odczytu. Blokowanie dwufazowe jest wersj operacji blokowania owania umo(liwiajc synchronizacj operacji odczytu i zapisu. W przypadku ka(dej transakcji, wszystkie operacje (dania blokad powinny poprzedza& wszystkie operacje odwo!ania blokad.. Wewntrz 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(liwiajcej równoczesny odczyt danych i blokady wy!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 any Transakcja dwufazowa: Faza 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: : transakcja odwo!uje poszczególne blokady. 21