Bazy danych 2. Wykład 6 Transakcje



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

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

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

Bazy danych. Andrzej Łachwa, UJ, /15

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

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

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

Oracle PL/SQL. Paweł Rajba.

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

Właściwości transakcji

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

Bazy danych 9. SQL Klucze obce Transakcje

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Transakcje jednocześnie ACID

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

Administracja i programowanie pod Microsoft SQL Server 2000

Przechowywanie danych

Ćwiczenie 9 współbieŝność

Internetowe bazy danych

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

Bazy danych. Dr inż. Paweł Kasprowski

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

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

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

OLTP Przetwarzanie Transakcyjne

Zarządzanie transakcjami

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

Bazy danych Transakcje

Transakcje Wykład z bazy danych dla studen

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

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

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

Tadeusz Pankowski

Tadeusz Pankowski

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

Bazy danych 9. Klucze obce Transakcje

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

Wykład 8. SQL praca z tabelami 5

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

PODSTAWY BAZ DANYCH Wykład 9

Wielowersyjne metody synchronizacji transakcji

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

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

Relacyjne bazy danych. Podstawy SQL

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

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

Cele. Definiowanie wyzwalaczy

Bazy danych w sterowaniu

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

15. Funkcje i procedury składowane PL/SQL

Wykład 5 Charakterystyka języka SQL. Elementy obliczeń relacyjnych.

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

Bazy danych 2. Wykład 3. Metodologia projektowania baz danych (projektowanie fizyczne)

Transakcje. Bazy danych 155

Obowiązuje od wersji

Paweł Rajba

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

K1A_W11, K1A_W18. Egzamin. wykonanie ćwiczenia lab., sprawdzian po zakończeniu ćwiczeń, egzamin, K1A_W11, K1A_W18 KARTA PRZEDMIOTU

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

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

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

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

Oracle11g: Wprowadzenie do SQL

Podstawy języka SQL - dokończenie TRANSAKCJE 1

Transakcyjne przetwarzanie danych

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

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

Integralność bazy danych

Microsoft SQL Server Podstawy T-SQL

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

System zarządzania bazą danych SZBD (ang. DBMS -Database Management System)

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Systemy GIS Tworzenie zapytań w bazach danych

Rozproszone i obiektowe systemy baz danych

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

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

1. Model ACID. 2. Deklaratywne zarządzanie transakcjami, atrybuty transakcji. 3. Propagacja transakcji. transakcje rozproszone, propagacja kontekstu

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

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

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

SQL (ang. Structured Query Language)

Kuźnia Talentów: Optymalizacja zapytań w SQL. Andrzej Ptasznik

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

Fizyczna struktura bazy danych w SQL Serwerze

Instrukcja administratora Agenta Administracji i Aktualizacji Aplikacji oraz baz danych Polskiego FADN oraz pobierania danych słownikowych

Pojęcie bazy danych. Funkcje i możliwości.

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

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

Wykład 5. SQL praca z tabelami 2

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Administracja i programowanie pod Microsoft SQL Server 2000

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA. Przetwarzanie transakcyjne

Doc. dr inż. Maria Chałon. Ochrona i bezpieczeństwo danych

Ćwiczenie 14 autoryzacja

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Dazy Banych. Michał Rusnarczyk

Transkrypt:

Bazy danych 2 Wykład 6 Transakcje

Transakcje Def. Transakcjami nazywamy logiczne jednostki pracy które wprowadzają zmiany do bazy danych lub które wyszukują dane O transakcjach mówimy w kontekście: aktualizacji bazy danych współuŝytkowania danych przez wielu uŝytkowników i powstawania wzajemnych konfliktów Transakcja moŝe obejmować jedną instrukcję lub większą ilość instrukcji.

Właściwości transakcji Niepodzielność albo wszystkie instrukcje wchodzące w skład transakcji są wykonane albo Ŝadna Spójność wszystkie transakcje muszą zachować spójność i integralność bazy danych Izolacja jeśli transakcja modyfikuje dane, to te dane mogą być czasowo niespójne, dlatego muszą być niedostępne dla innych transakcji dopóty, dopóki transakcja nie skończy ich uŝywać Trwałość gdy transakcja się kończy, to wszystkie zmiany przez nią dokonane muszą zostać w pełni utrwalone

Transakcja sekwencja logiczna Logiczna sekwencja jest następująca [BEGIN [WORK]/ START TRANSACTION [nazwa_transakcji] Wykonaj polecenie 1 ROLLBACK [WORK] [TRANSACTION] (baza danych powraca do stanu pierwotnego) [BEGIN [WORK]/ START TRANSACTION [nazwa_transakcji] Wykonaj polecenie 1 SAVEPOINT nazwa Wykonaj polecenie 2 Wykonaj polecenie 3 ROLLBACK TO SAVEPOINT nazwa Wykonaj polecenie 4 COMMIT [WORK] [TRANSACTION] (zmiany zostają zapisane w bazie)

Transakcja z punktami zapisu Przykład BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice'; SAVEPOINT my_savepoint; UPDATE accounts SET balance = balance + 100.00 WHERE name = 'Bob'; ROLLBACK TO my_savepoint; UPDATE accounts SET balance = balance + 100.00 WHERE name = 'Wally'; COMMIT TRANSACTION;

UWAGI Standard SQL nie definiuje frazy BEGIN. Transakcje w tym standardzie rozpoczynają się bowiem automatycznie wraz z wykonaniem pierwszej instrukcji. W programistycznym SQL zakończenie programu kończy z powodzeniem takŝe ostatnią transakcję, nawet jeŝeli nie zostało wydane polecenie COMMIT, zaś zakończenie z błędem powoduje wycofanie aktualnej transakcji.

Problem utraty zmian Przyczyna zaburzeń: Transakcja T 1 czyta dane podczas, gdy są one modyfikowane przez transakcję T 2

Problem niezatwierdzonych zaleŝności (brudny odczyt) Przyczyna zaburzeń: Transakcja T 3 jest wykonywana przy załoŝeniu, Ŝe modyfikacja wykonana przez przez transakcję T 4 została zakończona z powodzeniem

Problem analizy niespójności Przyczyna zaburzeń: Transakcja T 6 czyta dane, które są modyfikowane przez transakcję T 5

Kontrola współbieŝności Uwaga: DBMS powinien zapewniać pewien mechanizm umoŝliwiający zarządzanie operacjami wykonywanymi jednocześnie na bazie danych bez dopuszczania do niepoŝądanych oddziaływań pomiędzy nimi. Jednym z nasuwających się rozwiązań jest zezwolenie na wykonywanie tylko jednej transakcji w danym czasie; takie postępowanie jednak w znacznym stopniu wpływa na wydajność bazy danych. Rozwiązaniem lepszym (w kontekście wydajności) jest jakaś forma przeplatania transakcji, wiąŝe się z tym pojęcie szeregowalności [Papadimitriou, 1979]

Pojęcie szeregowalności Def. Harmonogram jest to ciąg operacji wykonywanych jednocześnie transakcji, w których zachowany jest porządek operacji kaŝdej transakcji. Def. Harmonogram sekwencyjny to harmonogram, w którym operacje kaŝdej transakcji są wykonywane kolejno, bez przeplatania operacji z róŝnych transakcji. W przypadku harmonogramu sekwencyjnego transakcje nie oddziaływają na siebie, poniewaŝ w danym czasie jest wykonywana tylko jedna transakcja. Kolejność transakcji nie jest ustalona, zatem wynik kaŝdego sekwencyjnego wykonania transakcji nie musi być taki sam. Def. Harmonogram niesekwencyjny jest to harmonogram, w którym operacje ze zbioru jednocześnie wykonywanych transakcji, są przeplecione.

Pojęcie szeregowalności Def. Harmonogram wykonywanych jednocześnie transakcji nazywamy szeregowalnym jeśli doprowadza on do takiego samego stanu bazy danych jak pewne wykonanie sekwencyjne tych transakcji. Fakt: Harmonogram szeregowalny jest harmonogramem poprawnym, czyli zapewnia takie wykonanie transakcji współbieŝnie nie dopuszczając do niepoŝądanych oddziaływań pomiędzy nimi. Uzasadnienie: Indywidualne transakcje są poprawne Dowolny harmonogram sekwencyjny jest poprawny Zatem harmonogram szeregowalny jest poprawny, bo doprowadza bazę do stanu takiego jak harmonogram szeregowalny.

Pojęcie szeregowalności Dla zapewnienia szeregowalności waŝne jest wzajemne uporządkowanie operacji odczytu i zapisu transakcji: JeŜeli dwie transakcje jedynie czytają ten sam element danych, to ich wzajemna kolejność nie jest istotna JeŜeli dwie transakcje czytają lub zapisują róŝne elementy danych, to nie kolidują ze sobą i ich wzajemna kolejność nie jest istotna. JeŜeli jedna transakcja zapisuje element danych, a druga go odczytuje lub zapisuje, to kolejność wykonania tych transakcji ma znaczenie.

Pojęcie szeregowalności

Techniki kontroli wielodostępu Metoda blokad (często stosowana przez byłego juz posła Andrzeja.L)

Metody oparte na blokadach Metoda oparta na blokadach polega na tym, Ŝe transakcja, która odwołuje się do danych blokuje innym transakcjom dostęp do danych. RozróŜniamy dwa typy blokad: Blokada do odczytu R (read locks) jeŝeli transakcji zostanie przyznana blokada read locks jednostki danych, to transakcja moŝe odczytywać wartość tej jednostki, ale nie moŝe jej zmieniać Blokada do zapisu W (write locks) - jeŝeli transakcji zostanie przyznana blokada write locks jednostki danych, to transakcja moŝe zarówno odczytywać wartość tej jednostki, jak i ją zmieniać Sposób przyznawania działania blokad przedstawia macierz: W R W N N R N Y

Protokól dostępu danych 1. Transakcja, która wymaga dostępu do jednostki danych występuje o przyznanie blokady dzielonej (jeŝeli zamierza jedynie odczytać wartość jednostki) lub blokady wyłącznej (jeŝeli zamierza odczytać i modyfikować wartość jednostki) 2. JeŜeli jednostka nie została wcześniej zablokowana przez inną transakcję, to blokada jest przydzielana transakcji, która o nią występuje. 3. JeŜeli prośba o blokadę jednostki została odrzucona, poniewaŝ jest w konflikcie z blokadą juŝ załoŝoną, to transakcja przechodzi w stan oczekiwania, aŝ blokada zostanie zwolniona. 4. Transakcja utrzymuje blokadę jednostki, aŝ do momentu jej jawnego odwołania w trakcie wykonania lub do czasu zakończenia (poprzez odrzucenie lub wypełnienie).

Protokół dostępu danych - przykład bal x =100 bal y =400 T9 ->T10 bal x =220 bal y =330 T10 ->T9 bal x =210 bal y =340 Stosujemy blokowanie bal x =220 bal y =340 schemat nie jest szeregowalny

Protokól blokowania dwufazowego 2PL Schemat protokołu blokowania dwufazowego jest następujący: 1. Zanim transakcje rozpocznie przetwarzanie jednostki musi uzyskać blokadę tej jednostki; transakcja Ŝąda załoŝenia wszystkich potrzebnych blokad 2. Po zwolnieniu blokady transakcja nie moŝe juŝ nakładać nowych blokad. Twierdzenie (Eswaran i in., 1976) JeŜeli wszystkie transakcje spełniają protokół dwufazowego blokowania, to wszystkie harmonogramy niesekwencyjne są szeregowalne.

2PL zapobieganie utracie zmian

2PL zapobieganie brudnemu odczytowi

2PL zapobieganie wystąpieniu problemu analizy niespójno jności

2PL wydaje się wspaniale ale...

2PL problem (wycofanie kaskadowe) Sztywny 2PL blokady zdejmowane w momencie zakończenia transakcji Ścisły 2PL- blokady wyłączne ( do zapisu) zdejmowane w momencie zakończenia transakcji

2PL problem (zakleszczenie) Metoda wykluczeń transakcja, która wystąpiła o blokadę czeka na nią tylko określony czas Metoda zapobiegania zakleszczeniom system nie dopuszcza do blokady Metoda wykrywania zakleszczeń o odtwarzania system wykrywa zakleszczenie i odrzuca jedną z transakcji, a później ją wznawia

WspółbieŜność w SQL poziomy izolacji Standard SQL nie zawiera Ŝadnych jawnych moŝliwości blokowania, umoŝliwia stosowanie róŝnych poziomów izolacji transakcji od innych transakcji, poziomy izolacji definiowane są na podstawie tego, które z naruszeń szeregowalności dopuszczają.

WspółbieŜność w SQL poziomy izolacji Brudny odczyt (Dirty read): pierwsza transakcja modyfikuje wiersz, a druga go czyta, zanim zmiana została zatwierdzona przez instrukcję COMMIT. Jeśli pierwsza transakcja została anulowana, zmiana nie miała miejsca i druga transakcja przeczytała wiersz, który naprawdę nigdy nie istniał Niepowtarzalny odczyt (Non-repeatable read): pierwsza transakcja czyta wiersz. Druga go usuwa lub modyfikuje i wykonuje COMMIT przed pierwszą. Teraz pierwsza transakcja mogłaby przeczytać ten sam wiersz jeszcze raz i otrzymać inne wyniki zanim zostanie sama zatwierdzona. Odczyt widmo (Phantom): pierwsza transakcja odczytuje wiersze spełniające predykat. Druga wstawia wartości (instrukcja INSERT) lub je modyfikuje (UPDATE) tak, Ŝe one równieŝ spełniają predykat. Następne wykonanie tego samego zapytania przez pierwszą transakcję da inne wyniki.

Współbie bieŝność w SQL poziomy izolacji Poziomy izolacji READ UNCOMMITED READ COMMITED REPEATABLE READ SERIALIZABLE Charakterystyka dozwolone czytanie wierszy z załoŝoną blokadą write lock brak blokady read lock niedozwolone czytanie wierszy z blokadą write lock blokada read lock załoŝona i utrzymywana tylko na czas czytania wiersza niedozwolone czytanie wierszy z blokadą write lock Blokada read lock załoŝona na wszystkie wiersze będące wynikiem zapytania i utrzymywana do końca transakcji niedozwolone czytanie wierszy z blokadą write lock blokada read lock załoŝona na wszystkie wiersze zawierające informacje na zadany temat (nie tylko te spełniajace warunek selekcji)

WspółbieŜność w SQL poziomy izolacji Poziom izolacji Brudny odczyt Niepowtarzalny odczyt Odczyt widmo READ UNCOMMITED TAK TAK TAK READ COMMITED NIE TAK TAK REPEATABLE READ NIE NIE TAK SERIALIZABLE NIE NIE NIE

Definiowanie poziomu izolacji w SQL SET TRANSACTION ISOLATION LEVEL {READ UNCOMMITED READ COMMITED REPEATABLE READ SERIALIZABLE} Im wyŝszy poziom izolacji tym większe bezpieczeństwo, ale wolniejsze działanie BDMS JeŜeli wszystkie transakcje są na poziomie SERIALIZABLE, to system gwarantuje szeregowalność harmonogramów.

Jawne blokady (zaleŝne od dialektu) Wiersze i tabele moŝna blokować wyłącznie wewnątrz transakcji, po zakończeniu transakcji wszystkie blokady zostaną zwolnione, nie ma sposobu jawnego zwolnienia blokady Blokowanie wierszy spełniających warunek SELECT.. FOR UPDATE Blokowanie tabel LOCK TABLE table-name IN { SHARE EXCLUSIVE } MODE

Dziękuję za uwagę!