Zarządzanie transakcjami

Slides:



Advertisements
Podobne prezentacje
Bazy danych II Transakcje Piotr Górczyński 25/08/2001.
Advertisements

Przetwarzanie transakcyjne
Podstawowe pojęcia programowania współbieżnego
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Architektura SAP R/3 Wybrane zagadnienia.
SYSTEMY OPERACYJNE WSTĘP
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Interfejs użytkownika do zarządzania konfiguracją oprogramowania
Systemy rozproszone W. Bartkiewicz Wykład 11. Transakcje
Bazy danych 10. Z łą czenia i transakcje P. F. Góra semestr letni 2004/05.
Wycofywanie potwierdzonych transakcji
Microsoft Office Access
Odwzorowania relacyjno-obiektowe Hibernate Tranzakcyjność i bezpieczeństwo danych.
Wykład 11 Prowadzący: dr Paweł Drozda
Wykład 10 Prowadzący: dr Paweł Drozda
Synchronizacja Rozdział 5.
Systemy operacyjne.
Wykład 2 Wojciech Pieprzyca
Wykład 3 Wojciech Pieprzyca
Wykład 5 Wojciech Pieprzyca
Rozproszone bazy danych
Systemy zarządzania treścią CMS
Zarządzanie transakcjami i odtwarzanie po awarii
Modele baz danych - spojrzenie na poziom fizyczny
Odwzorowania relacyjno-obiektowe Hibernate Tranzakcyjność i bezpieczeństwo danych.
Zarządzanie transakcjami w SQL Server
Zarządzanie transakcjami Wykład S. Kozielski. Zarządzanie transakcjami Transakcja – jedna lub więcej operacji na bazie danych stanowiących pewną logiczną
Bezpieczeństwo baz danych
SIEĆ P2P 1. Definicja sieci równouprawnionej. To taka sieć, która składa się z komputerów o takim samym priorytecie ważności, a każdy z nich może pełnić.
Moduł 3: Zarządzanie grupami
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Produkcja – zarządzanie instrukcjami
Instrukcja USOS Rejestracja na zajęcia obieralne wersja by Marek Opacki.
Systemy operacyjne.
Zasada działania komputera
dr hab. Ryszard Walkowiak prof. nadzw.
Uruchamiamy moduł APW44 - Komunikacja
Przystawka Zarządzanie dyskami
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
SQL - Structured Query Language
Defragmentacja dysku Jednym z kluczowych czynników wydajności operacji wejścia/wyjścia jest poziom fragmentacji plików. Fragmentacja oznacza zapisywanie.
Wybrane zagadnienia relacyjnych baz danych
Operacje edycyjne w bazie danych - kwerendy funkcjonalne Marzena Nowakowska Katedra Informatyki Stosowanej, WZiMK, PŚk.
MICROSOFT Access TWORZENIE MAKR
dr Łukasz Murowaniecki T-109
Bazy danych Microsoft access 2007.
Etapy uruchamiania systemu Pliki konfiguracyjne
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
PL/SQL – dalsza wędrówka
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
Algorytmika.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 1: Wprowadzenie do baz danych.
Systemy informatyczne
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Procesor, pamięć, przerwania, WE/WY, …
1 Zarządzanie transakcjami Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000.
Slajd 1© J.Rumiński Jacek Rumiński  Bazy danych Kontakt: Katedra Inżynierii Biomedycznej, pk. 106, tel.: , fax: ,
Projektowanie relacyjnych baz danych – diagramy związków encji
Transakcje Przedmiot: Bazy Danych Prowadzący: mgr inż. Leszek Siwik Autorzy: Grzegorz Szymczyk Damian Wieczorek.
BAZY DANYCH MS Access.
Model warstwowy ISO-OSI
Przewodnik Wprowadzenie do
Przetwarzanie transakcyjne. Wprowadzenie (1) Baza danych – jest abstrakcyjnym odzwierciedleniem wybranego fragmentu rzeczywistości (ang. miniworld) mini.
PROGRAMY DO KONTROLI RODZICIELSKIEJ
Strukturalny język zapytań SQL - historia
PROGRAMY DO KONTROLI RODZICIELSKIEJ
INFORMACJE O EGZAMINIE GIMNAZJALNYM DLA RODZICÓW ROK SZKOLNY2017/2018
Technologie Informacyjne Bazy danych
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Zarządzanie transakcjami Wprowadzenie do systemów baz danych

Transakcja Transakcjami nazywamy procedury, które wprowadzają zmiany do bazy danych lub które wyszukują dane Transakcją może być jedna instrukcja lub zbiór instrukcji tworzących pewną logiczną jednostkę pracy O transakcjach mówimy w kontekście współużytkowania danych przez wielu użytkowników i powstawania ewentualnych wzajemnych konfliktów Samo czytanie danych (bez ich modyfikacji) nie powoduje konfliktów Przyczyną powstawania konfliktów są modyfikacje danych w środowisku wielu użytkowników System zarządzania bazą danych powinien rozwiązać potencjalne konflikty powstające przy przetwarzaniu transakcji

Wymagania stawiane transakcjom Niepodzielność – albo wszystkie modyfikacje 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 – nawet w przypadku awarii sprzętu (ang. ACID – Atomicity, Consistency, Isolation, Durability)

Właściwości transakcji Transakcja to jedna modyfikacja lub seria modyfikacji bazy danych traktowana tak jakby była to jedna modyfikacja Jeśli modyfikacje zachodzą, to wszystkie zachodzą w jednej chwili Użytkownicy mogą zobaczyć stan bazy danych przed transakcją lub po jej zakończeniu, ale nigdy w trakcie

Przykłady transakcji i zagrożeń Rezerwacja miejsca w samolocie – możliwe dwukrotne sprzedanie tego samego miejsca Zwiększanie pensji 300 pracowników – możliwa awaria sprzętu w trakcie zapisu na dysk Transfer pieniędzy z konta na konto – obie operacje muszą być wykonana albo żadna W trakcie transferu pieniędzy z konta na konto ktoś sprawdza sumę wszystkich kont, i nie może widzieć stanu pośredniego (z jednego konta pieniądze zniknęły, a na drugim się nie pojawiły)

Zatwierdzanie transakcji W języku SQL do zatwierdzenia transakcji służy instrukcja COMMIT Do odwołania transakcji służy polecenie ROLLBACK W standardzie języka SQL nie ma instrukcji zaczynającej transakcję SQL Server umożliwia przeprowadzanie transakcji w 3 trybach AutoCommit – każde polecenie SQL stanowi odrębną transakcję Explicit – transakcję trzeba rozpocząć poleceniem BEGIN TRAN[SACTION] i zakończyć poleceniem COMMIT lub ROLLBACK Implicit – transakcja rozpoczyna się automatycznie po wykonaniu 1 polecenia SQL i trzeba ją zakończyć jawnie poleceniem COMMIT lub ROLLBACK PostgreSQL domyślnie pracuje w trybie automatycznego zatwierdzania transakcji Aby jawnie rozpocząć transakcję, należy wydać instrukcję BEGIN

Problem utraconej modyfikacji Transakcja 1 Transakcja 2 Wartość pola Miejsca BEGIN Miejsca = 10 Odczyt (Miejsca = 10) Miejsca = Miejsca + 1 UPDATE Miejsca = 11 Miejsca = Miejsca + 5 Miejsca = 11 COMMIT UPDATE Miejsca = 15 Miejsca = 15

Problem niezatwierdzonej zależności Transakcja 1 Transakcja 2 Wartość pola Miejsca BEGIN Miejsca = 10 Odczyt (Miejsca = 10) Miejsca = Miejsca + 1 UPDATE Miejsca = 11 Miejsca = 11 Odczyt (Miejsca = 11) ROLLBACK Miejsca = Miejsca + 5 = 16 UPDATE Miejsca = 16 Miejsca = 16 COMMIT

Częściowe rozwiązanie problemu Zapisując nową wartość, w miejsce starej, należy sprawdzić czy stara wartość nie została zmieniona od czasu ostatniego odczytu (wartość ostatniego odczytu należy zapamiętać) UPDATE SET Miejsca = nowa_wartość WHERE Miejsca = poprzednio_odczytana_wartość AND … Jeśli wartość Miejsca uległa zmianie od ostatniego odczytu, to modyfikacja nie zostanie wykonana i otrzymamy komunikat o aktualizacji 0 liczby wierszy Jeśli wartość Miejsca nie uległa zmianie od ostatniego odczytu, to modyfikacja zostanie wykonana i otrzymamy komunikat o aktualizacji 1 wiersza

Izolacja transakcji – język SQL W języku SQL określono 4 poziomy izolacji transakcji W celu zdefiniowania poziomów izolacji transakcji określono 3 rodzaje nieprawidłowych odczytów Poziom izolacji transakcji określa dozwolone dla danego poziomu nieprawidłowe odczyty Im wyższy poziom izolacji, tym mniej dopuszczalnych nieprawidłowych odczytów Im wyższy poziom izolacji tym wolniejsza praca systemu zarządzania bazą danych Dopuszczenie nieprawidłowych odczytów przyspiesza pracę systemu zarządzania bazą danych w porównaniu z najwyższym poziomem izolacji - szeregowym

Nieprawidłowe odczyty 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ł Odczyt bez powtórzeń (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

Nieprawidłowe odczyty Odczyt widmo (Phantom): pierwsza transakcja odczytuje wiersze spełniające predykat. Druga wstawia wartości (instrukcja INSERT) lub je modyfikuje (instrukcja UPDATE) tak, że one również spełniają predykat. Następne wykonanie tego samego zapytania przez pierwszą transakcję da inne wyniki

Poziomy izolacji i dozwolone odczyty Poziom izolacji Brudny odczyt Odczyt bez powtórzeń Odczyt widmo READ UNCOMMITED TAK READ COMMITED NIE REPEATABLE READ SERIALIZABLE

Określanie poziomu izolacji SET TRANSACTION ISOLATION LEVEL {READ UNCOMMITED | READ COMMITED | REPEATABLE READ | SERIALIZABLE} READ WRITE | READ ONLY PostgreSQL obsługuje tylko poziomy: READ COMMITED (domyślny) i SERIALIZABLE wybranie innego poziomu izolacji powoduje ustawienie odpowiedniego wyższego poziomu

Szeregowy harmonogram transakcji Transakcje są wykonywane kolejno bez przeplatania się operacji między transakcjami Każda transakcja musi się zakończyć zanim zacznie się nowa transakcja Szeregowy harmonogram transakcji gwarantuje, że baza danych nigdy nie znajdzie się w stanie niespójnym

Nieszeregowy harmonogram transakcji W środowisku wielu użytkowników wiele transakcji może nie komunikować się ze sobą i być wykonywane równolegle Szeregowalność to określenie takich harmonogramów nieszeregowych, które zachowują się jak szeregowe Harmonogram nieszeregowy jest poprawny, jeśli tworzy taki sam wynik jak pewne wykonanie szeregowe W celu zapewnienia szeregowalności wiele systemów stosuje blokady

Przykład Linie lotnicze sprzedają bilety na 100 lotów dziennie, samolotami o średniej liczbie miejsc w samolocie 120 Daje to średnio 12000 biletów dziennie, 500 biletów na godzinę, 8 biletów na minutę Szeregowanie wszystkich transakcji jest niemożliwe z uwagi na czas trwania jednej transakcji, szczególnie, gdy klient długo się zastanawia Szeregowanie wszystkich transakcji jest także zbyteczne, gdyż transakcje sprzedaży biletów na poszczególne loty są wzajemnie niezależnie Szeregowanie transakcji sprzedaży biletów na pojedynczy lot jest w pełni wykonalne – szczególnie, gdy uwzględnimy, że bilety na jeden lot są sprzedawane przez kilka dni

Blokady Wiele baz danych implementuje izolację transakcji za pomocą blokad, które ograniczają dostęp do danych, używanych przez transakcję, innym transakcjom Istnieją dwa typy blokad Blokada współdzielona (shared lock), która pozwala innym użytkownikom odczytywać dane, ale nie pozwala na ich aktualizację Blokada wyłączna, która nie zezwala innym transakcjom nawet na czytanie danych

Zakleszczenie BEGIN UPDATE wiersz 64 (blokada wiersza 64) UPDATE wiersz 68 (czekanie na odblokowanie wiersza 68) UPDATE wiersz 64 (czekanie na odblokowanie wiersza 64) Auto-ROLLBACK COMMIT

Przebieg wykonywania transakcji Rozpoczęcie – wprowadzenie transakcji do menadżera Rejestracja wstępnych informacji w dzienniku transakcji Sprowadzenie rekordów bazy danych Rejestracja obrazu danych przed transakcją Obliczenie nowych wartości Rejestracja obrazu danych po transakcji Rejestracja zatwierdzenia Zapis nowych rekordów do bazy danych Po przerwaniu działania w dowolnym momencie można odtworzyć stan bazy danych przed lub po transakcji

Transakcje rozproszone W rozproszonych bazach danych dane są rozmieszczone na różnych serwerach – tzw. serwerach sprzężonych Komercyjne serwery baz danych obsługują transakcje rozproszone, czyli transakcje obejmujące modyfikacje danych ulokowanych na różnych serwerach MS SQL Server wyposażony jest w usługę MS DTS (Distributed Transaction Coordinator) do kontroli transakcji rozproszonych i gwarantuje spójność wszystkich transakcji na SQL Serverze i serwerach z nim sprzężonych Warunkiem poprawnego wykonania transakcji rozproszonej jest jej zatwierdzenie na wszystkich serwerach