Bazy danych wykład dziewiaty Transakcje. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Podobne dokumenty
1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

przykłady problemów; realizacja dostaw części od producenta do klienta:

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Bazy danych 9. SQL Klucze obce Transakcje

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Właściwości transakcji

Bazy danych 2. Wykład 6 Transakcje

Plan ćwiczenia. Rozdział 17. zarządzania współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

Bazy danych. Andrzej Łachwa, UJ, /15

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Oracle PL/SQL. Paweł Rajba.

070 TRANSAKCJE. Prof. dr hab. Marek Wisła

Transakcje Wykład z bazy danych dla studen

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Bazy danych 9. Klucze obce Transakcje

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Tadeusz Pankowski

Wykłady z przedmiotu Podstawy baz danych Transakcje dr hab. prof. nadzw. Tadeusz Antczak. Transakcje

Izolacje transakcji oraz anomalie. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Plan wykładu. Przykład. Wprowadzenie BAZY DANYCH. Transakcje Hurtownie danych

Transakcje jednocześnie ACID

Bazy danych 6a. Transakcje. P. F. Góra

Plan ćwiczenia. Rozdział 17 Zarządzanie współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

Wykłady z przedmiotu Podstawy baz danych Transakcje dr hab. prof. UŁ. Tadeusz Antczak. Transakcje

Zarządzanie transakcjami

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Wielowersyjne metody synchronizacji transakcji

Przechowywanie danych

PODSTAWY BAZ DANYCH. 11. Transakcje. 2009/ Notatki do wykładu "Podstawy baz danych"

Bazy danych Transakcje

Ćwiczenie 9 współbieŝność

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych 7. Klucze obce Transakcje. P. F. Góra

Rozdział 17. Zarządzanie współbieżnością zadania

Wprowadzenie (1) Przetwarzanie transakcyjne. Wprowadzenie (2) Problemy przygotowania aplikacji

Administracja i programowanie pod Microsoft SQL Server 2000

Rozproszone i obiektowe systemy baz danych

Zarządzanie obiektami bazy danych Oracle11g

PODSTAWY BAZ DANYCH Wykład 9

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań,

Algorytmy zarządzania współbieżnym wykonywaniem transakcji część I

I. Techniki wielowersyjne sterowania współbieżnością

Internetowe bazy danych

Paweł Rajba

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1

Algorytmy zarządzania współbieżnym wykonywaniem transakcji część II

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Ćwiczenie 3. Współbieżność i transakcje

OLTP Przetwarzanie Transakcyjne

Informatyka (7-8) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Podstawy języka SQL - dokończenie TRANSAKCJE 1

Bazy danych. Plan wykładu. Czynniki wpływające na fizyczny projekt bazy danych. bazy danych

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

TECHNIKI STEROWANIA WSPÓŁBIEŻNOŚCIĄ. I. Wybrane problemy współbieżności. Utracona aktualizacja (lost update)

Transakcja jest sekwencją logicznie powiązanych operacji na bazie danych, która przeprowadza bazę danych z jednego stanu spójnego w inny stan spójny

Wykład 8. SQL praca z tabelami 5

Bazy danych i usługi sieciowe

Podstawy teoretyczne baz danych. Recovery Transakcyjne odtwarzanie bazy danych po awarii

Rozproszone bazy danych 2

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Wyzwalacze (triggery) Przykład

Obowiązuje od wersji

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

Transakcyjne przetwarzanie danych

Wykłady z przedmiotu Podstawy baz danych Transakcje dr hab. prof. nadzw. Tadeusz Antczak. Transakcje

Bazy danych - Materiały do laboratoriów VIII

Microsoft SQL Server Podstawy T-SQL

Tadeusz Pankowski

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

DECLARE VARIABLE zmienna1 typ danych; BEGIN

E.14 Bazy Danych cz. 15 SQL Transakcyjne przetwarzanie danych

P o d s t a w y j ę z y k a S Q L

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

PODSTAWY BAZ DANYCH 13. PL/SQL

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

Administracja bazami danych

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

(a) T (b) N (c) N (d) T

UPDATE konta /* dodaj do konta B kwotę N */ UPDATE konta /* odejmij kwotę N z konta A */ WHERE id_konta = B; SET stan = stan + N

Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Inżynieria oprogramowania. Faza implmentacji. wykład 7

Wzorce dystrybucji i wspólbieżności autonomicznej

Cel odtwarzania. Transakcyjne odtwarzanie bazy danych. Modele awarii. Efektywność odtwarzania MTTF

Adam Cankudis IFP UAM

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Oracle PL/SQL. Paweł Rajba.

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

Transkrypt:

Bazy danych wykład dziewiaty Transakcje Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa dziewiaty Transakcje 1 / 42

Outline 1 Transakcje Problemy interakcji 2 Metody usuwania konfliktów Szeregowalność Blokady Zakleszczenia Misc 3 Transakcje i blokady w BD Oracle dziewiaty Transakcje 2 / 42

Problemy współbieżności Jeśli BD komunikuje się tylko z jednym użytkownikiem, nie powstaje problem konfliktowych operacji. W praktyce BD musza często zapewniać równoległość dostępu. Przykłady: rezerwacje biletów, operacje bankowe, sklepy internetowe,... dziewiaty Transakcje 3 / 42

Problemy współbieżności Rozważmy dwie transakcje: T 1 : read(x), write(x,1), read(y), write(y,2); T 2 : read(x), write(x,4), read(y), write(y,3); Jaka wartość beda miały X i Y po zakończeniu działania T 1 i T 2? dziewiaty Transakcje 4 / 42

Problemy współbieżności Rozważmy ciag operacji transakcji T 1 i T 2 : 1 Wczytaj wolne miejsca, 2 Wczytaj wolne miejsca, 3 Rezerwuj miejsce 13, 4 Rezerwuj miejsce 13. Nie chcemy, żeby T 2 zapisała miejsce zajęte już przez T 1. Nie byłoby problemu, gdyby transakcje wykonywane były jedna po drugiej (nierealne). Transakcja T 1 powinna zablokować zajęty rekord, transakcja T 2 powinna być wycofana (ale nie warto zakładać blokady na wszystkie wolne miejsca przed wczytaniem ich przez T 1. dziewiaty Transakcje 5 / 42

Transakcje Definicja 1 Transakcja jest to ciag operacji na bazie danych, które powinny być wykonane w sposób atomowy, jak jedna instrukcja. Jeśli nie będzie można wykonac jednej z instrukcji w transakcji, trzeba anulować efekt wszystkich. Standard SQL domyślnie wymaga, żeby transakcje traktować jako przetważane szeregowo. W praktyce implementacje BD pozwalaja na osłabienie tego wymagania w celu zwiększenia efektywności. Transakcje zatwierdzamy przez commit, anulujemy przez rollback. dziewiaty Transakcje 6 / 42

Własności transakcji ACID Atomowość (atomicity) transakcja wykona się albo w całości albo wcale, Spójność (consistency) przeprowadzi bazę danych ze stanu spójnego do spójnego, Isolacja (isolation) wynik jej działania będzie niezależny od innych działajacych w tym czasie transakcji, Trwałość (durability) wyniki jej działania sa trwałe. dziewiaty Transakcje 7 / 42

Przyczyny konfliktów Jeśli dwie transakcje chca zapisać ten sam rekord, to wchodza ze soba w konflikt. Źródłem problemów jest też sytuacja, w której jedna transakcja zapisuje dane, które chce odczytać druga. Jeśli dwie transakcje tylko odczytuja dane, to nie moga wejść ze soba w konflikt. dziewiaty Transakcje 8 / 42

Outline 1 Transakcje Problemy interakcji 2 Metody usuwania konfliktów Szeregowalność Blokady Zakleszczenia Misc 3 Transakcje i blokady w BD Oracle dziewiaty Transakcje 9 / 42

Odczyt brudnych danych Rozważmy scenariusz: T 1 T 2 update Miejsca set zajete = true where numer = 13; select numer from Miejsca where zajete = false; rollback; no rows selected. dziewiaty Transakcje 10 / 42

Odczyt brudnych danych Definicja 2 Odczyt brudnych danych ma miejsce kiedy jedna transakcja odczytuje dane, które zmieniła druga transakcja, która została potem wycofana. Uwaga. To sie nie ma prawa zdażyć w BD Oracle. dziewiaty Transakcje 11 / 42

Niepowtarzalny odczyt Rozważmy scenariusz: T 1 T 2 select min(a) from r; delete from r where a=8; insert into r values (5); commit; MIN(A): 8 select max(a) from r; MAX(A): 5 dziewiaty Transakcje 12 / 42

Niepowtarzalny odczyt Definicja 3 Niepowtarzalny odczyt występuje kiedy transakcja odczytuje dwa razy te same dane i otrzymuje inne wyniki, gdyż zostały one zmienione przez inna, zatwierdzona transakcję. Transakcja T 2 nie odczytała niezatwierdzonych danych, ale otrzymała niespójne odpowiedzi: max(a) < min(a). dziewiaty Transakcje 13 / 42

Fantomowe dane Rozważmy scenariusz: T 1 T 2 select a from r; insert into r values (5); commit; A: 1, 2, 8 select a from r; A: 1, 2, 8, 5 dziewiaty Transakcje 14 / 42

Fantomowe dane Definicja 4 Fantomowe dane pojawia sie, kiedy transakcja odczytujac dwa razy te same dane otrzymuje za drugim razem więcej wyników. Przy tej anomalii nie wystapiłby problem typu: max < min. dziewiaty Transakcje 15 / 42

Poziomy izolacji transakcji Wyróżniamy następujace poziomy izolacji transakcji: Z odczytem niezatwierdzonych danych (uncommited read). Z odczytem zatwierdzonych danych (commited read). Z odczytem powtarzalnym (repeatable read). Sekwencyjny (serializable). dziewiaty Transakcje 16 / 42

Poziomy izolacji transakcji Dopuszczalność anomalii przy poziomach izolacji: Poziomy izolacji brudne niepowtarzalność dane dane fantomowe uncommited read tak tak tak commited read nie tak tak repeatable read nie nie tak serializable nie nie nie dziewiaty Transakcje 17 / 42

Outline 1 Transakcje Problemy interakcji 2 Metody usuwania konfliktów Szeregowalność Blokady Zakleszczenia Misc 3 Transakcje i blokady w BD Oracle dziewiaty Transakcje 18 / 42

Outline 1 Transakcje Problemy interakcji 2 Metody usuwania konfliktów Szeregowalność Blokady Zakleszczenia Misc 3 Transakcje i blokady w BD Oracle dziewiaty Transakcje 19 / 42

Szeregowalność Niech t, s, w beda zmiennymi transakcji a X, Y, Z, W rekordami w bazie danych. Transakcje T i możemy potraktować jako ciag instrukcji read(i,x,s), write(i, X,s). Ciag instrukcji r 1,..., r n jest szeregowy jeśli wszystkie instrukcje każdej transakcji występuja w jednym podciagu. Ciag instrukcji r 1,..., r n jest szeregowalny jeśli jeśli istnieje szeregowy ciag instrukcji r 1,..., r n, którego wykonanie dla wszystkich stanów bazy danych daje ten sam efekt. dziewiaty Transakcje 20 / 42

Szeregowalność Jeśli ciag instrukcji jest szeregowalny, to możemy traktować transakcje jakby były wykonywane sekwencyjnie. Osiagamy najwyższy możliwy poziom izolacji. dziewiaty Transakcje 21 / 42

Szeregowalność przykład Ciag instrukcji: read(1, X,t), write(1, X, t+10); read(2, X, s), write(2, X, s*3); read(1, Y, t); write(1,y, t+10); read(2, Y, s); write(2, Y, s*3); nie jest szeregowy ale jest szeregowalny. Równoważny ciag to: read(1, X,t), write(1, X, t+10); read(1, Y, t); write(1,y, t+10); read(2, X, s), write(2, X, s*3); read(2, Y, s); write(2, Y, s*3); dziewiaty Transakcje 22 / 42

Szeregowalność przykład Ciag instrukcji: read(1, X,t), write(1, X, t+10); read(2, X, s), write(2, X, s*3); read(2, Y, s); write(2, Y, s*3); read(1, Y, t); write(1,y, t+10); nie jest szeregowalny. Ciag instrukcji: read(1, X,t), write(1, X, t+10); read(2, X, s), write(2, X, s + 30); read(2, Y, s); write(2, Y, s + 30); read(1, Y, t); write(1,y, t+10); jest szeregowalny tylko z powodu przmienności dodawania. dziewiaty Transakcje 23 / 42

Outline 1 Transakcje Problemy interakcji 2 Metody usuwania konfliktów Szeregowalność Blokady Zakleszczenia Misc 3 Transakcje i blokady w BD Oracle dziewiaty Transakcje 24 / 42

Blokady W praktyce szeregowalność jest zbyt silnym wymogiem. Szeregowanie transakcji mogłoby spowodować zbyt długi czas działania poszczególnych transakcji. Bardziej realistycznym rozwiazaniem sa słabsze poziomy izolacji. W celu ich zapewnienia można stosować mechanizmy takie jak blokady wierszy lub (rzadziej) całych tabel. Uwaga. W praktyce Oracle sam zarzadza blokadami jakie nakładaja działania transakcji. dziewiaty Transakcje 25 / 42

Blokady dzielone Blokada dzielona na rekord X pozwala innym transakcjom odczytywać wartość rekordu X. Blokady dzielone stosuje się w celu zabezpieczenia odczytanego rekordu przed zmiana w czasie działania transakcji, która go odczytała. Jeden rekord może mieć założonych wiele blokad dzielonych. Transakcja odczytujac rekord X nakłada na niego blokadę dzielona. dziewiaty Transakcje 26 / 42

Blokady na wyłaczność Jeśli transakcja chce zmienić lub usunać rekord X musi nałożyć na niego blokadę na wyłaczność. Blokady na wyłaczność nie można założyć na rekord, który ma blokadę dzielona. Jeden rekord może mieć założona tylko jedna blokadę na wyłaczność. Blokadę taka zakładamy modyfikujac rekord. Przestaje być on widoczny (przy poziomie commited read) aż do chwili zatwierdzenie transakcji. Zatwierdzenie transakcji zwalnia wszystkie nałozone przez nia blokady. dziewiaty Transakcje 27 / 42

Zawieszenie wykonywania transakcji Nałożona blokada może spowodować zawieszenie wykonywania transakcji do czasu zatwierdzenia transakcji, która nałożyła blokadę. Dlatego trzeba unikać zakładania blokad (zwłaszcza na wyłaczność) w sytuacji interakcji z użytkownikiem. dziewiaty Transakcje 28 / 42

Outline 1 Transakcje Problemy interakcji 2 Metody usuwania konfliktów Szeregowalność Blokady Zakleszczenia Misc 3 Transakcje i blokady w BD Oracle dziewiaty Transakcje 29 / 42

Zakleszczenia Rozważmy ciag interakcji: T 1 T 2 write(x,1) write(y, 2) write(y,1) write(x,2) Obie transakcje czekaja na zwolnienie blokady na wyłaczność. dziewiaty Transakcje 30 / 42

Zakleszczenia Oracle W przypadku wykrycia zakleszczenia SZBD Oracle wysyła do jednej z transakcji komunikat o błędzie: ORA 00060: deadlock detected while waiting for resource. Transkacja, która otrzymała komunikat o błedzie kończy oczekiwanie i może np. wykonać commit lub rollback. Druga z transakcji oczekuje dalej na zwolnienie blokady. dziewiaty Transakcje 31 / 42

Outline 1 Transakcje Problemy interakcji 2 Metody usuwania konfliktów Szeregowalność Blokady Zakleszczenia Misc 3 Transakcje i blokady w BD Oracle dziewiaty Transakcje 32 / 42

Długie transakcje Jeśli czas modyfikacji trwa długo (np. modyfikacje programu lub pliku tekstowego przez użytkownika) to często nie warto zakładać blokady. Można zastosować np. system wypożyczania i zwracania. dziewiaty Transakcje 33 / 42

Inne rodzaje blokad Blokady inkrementacyjne. Blokady z aktualizacja. dziewiaty Transakcje 34 / 42

Outline 1 Transakcje Problemy interakcji 2 Metody usuwania konfliktów Szeregowalność Blokady Zakleszczenia Misc 3 Transakcje i blokady w BD Oracle dziewiaty Transakcje 35 / 42

O. traktuje każda instrukcję SQL jako atomowa (statement level atomicity). Nie można aktualizować tylko części tabeli. Wycofanie instrukcji SQL skutkuje także wycofaniem skutków działania wyzwalaczy, które uruchomiła. Wycofanie instrukcji SQL nie powoduje wycofania całej transakcji. dziewiaty Transakcje 36 / 42

Każda sesja z baza danych to jedna transakcja, zakończyć taka transakcję można przez polecienie commit lub rollback. Innym sposobem na zakończenie transakcji (jako commit) jest wydanie polecenia DDL lub zakończenie połaczenia z baza danych (disconnect). Każda nowa komenda SQL po commit lub instrukcji DDL rozpoczyna nowa transakcję. dziewiaty Transakcje 37 / 42

Polecenia specyficzne dla Oracle SET TRANSACTION i SET TRANSACTION NAME <nazwa>, COMMIT, ROLLBACK, SAVEPOINT <nazwa>, ROLLBACK TO SAVEPOINT. dziewiaty Transakcje 38 / 42

Rollback to savepoint Polecenie rollback to savepoint <nazwa> wycofuje zmiany wykonane przez transakcję po założeniu punktu <nazwa>. Wszystkie blokady założone po tym punkcie zostaja zwolnione. Jeśli inna transakcja czekała na zwolnienie blokady już wcześniej, to nie otrzyma zasobu. Nowe blokady będa mogły założyć tyko transakcje, które zażadaj a go po jego zwolnieniu. dziewiaty Transakcje 39 / 42

Rollback to savepoint przykład Rozważmy następujaca interakcję trzech transakcji na tabeli r(a,b): T 1 T 2 T 3......... savepoint powrot; update r set a= 1 where b=5; 1 row updated. update r set a= 2 where b=5; rollback to s. powrot; T 2 czeka... T 2 czeka... update r set a= 3 where b=5;... 1 row updated. commit;...... commit 1 row updated. dziewiaty Transakcje 40 / 42

Poziomy izolacji w Oracle Domyślnym poziomem izolacji jest read commited. Inne poziomy to serializable oraz read only. Poziom read only zapewnia powtarzalność wyników zapytań, zabrania modyfikacji bazy danych (set transaction read only). dziewiaty Transakcje 41 / 42

Poziomy izolacji w Oracle set isolation level [committed read serializable]; set transaction [read only read write]; dziewiaty Transakcje 42 / 42