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

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

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

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

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

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. Andrzej Łachwa, UJ, /15

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

Bazy danych 2. Wykład 6 Transakcje

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

Oracle PL/SQL. Paweł Rajba.

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

Transakcje jednocześnie ACID

Ćwiczenie 9 współbieŝność

Bazy danych 9. SQL Klucze obce Transakcje

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

Właściwości transakcji

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

Wielowersyjne metody synchronizacji transakcji

Transakcje Wykład z bazy danych dla studen

Przechowywanie danych

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Zarządzanie transakcjami

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

Bazy danych - Materiały do laboratoriów VIII

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

OLTP Przetwarzanie Transakcyjne

Bazy danych 9. Klucze obce Transakcje

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

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

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

Bazy danych Transakcje

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

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

Wykład 8. SQL praca z tabelami 5

Administracja i programowanie pod Microsoft SQL Server 2000

Tadeusz Pankowski

Bazy danych. Dr inż. Paweł Kasprowski

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

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

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

Paweł Rajba

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

Bazy danych w sterowaniu

Internetowe bazy danych

PODSTAWY BAZ DANYCH Wykład 9

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

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

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

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

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

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

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

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

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

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

Oracle PL/SQL. Paweł Rajba.

Transakcyjne przetwarzanie danych

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

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

Rozproszone i obiektowe systemy baz danych

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

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

Podstawy języka SQL - dokończenie TRANSAKCJE 1

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA. Przetwarzanie transakcyjne

Obowiązuje od wersji

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

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

Zarządzanie obiektami bazy danych Oracle11g

15. Funkcje i procedury składowane PL/SQL

Microsoft SQL Server Podstawy T-SQL

PODSTAWY BAZ DANYCH 13. PL/SQL

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

Uprawnienia, role, synonimy

Bazy danych i usługi sieciowe

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

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

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Hbase, Hive i BigSQL

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

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

Bazy danych i systemy zarzadzania

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

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

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

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

Oracle11g: Wprowadzenie do SQL

Tadeusz Pankowski

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

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

Bazy Danych. Ćwiczenie 13: transakcje w bazach danych

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

Dazy Banych. Michał Rusnarczyk

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

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

Transkrypt:

Przetwarzanie transakcyjne Transakcja zestaw operacji pod szczególną kontrolą transakcja to sekwencja operacji, która musi zakończyć się sukcesem w całości - w przeciwnym wypadku musi powrócić stan początkowy (wyjściowy ) pojęcie transakcji jest podstawą wszelkich mechanizmów odpowiedzialnych za niezawodne działanie systemu z wieloma użytkownikami zmiany zachodzące w świecie rzeczywistym, a zmiany w bazie danych przykłady problemów; realizacja dostaw części od producenta do klienta: " pobrano " zamówioną liczbę części ze stanów magazynowych producenta, po czym nastąpiła awaria systemu " wstawiono " do zamówień klienta odpowiednią liczbę zamówionych części, po czym nastąpiła awaria prowadzono jednocześnie sprzedaż tej samej części dla kilku innych klientów 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. Typy operacji na bazie danych obejmują odczyt i zapis danych oraz zakończenie połączone z akceptacją ( zatwierdzeniem ) lub wycofaniem transakcji. przykład: BEGIN TRANSACTION INSERT INTO Zamowienia (id_zamowienia, l_sztuk, id_czesci ) VALUES (351, 100, ' XY_231'); UPDATE Stany_magazynowe SET l_sztuk = l_sztuk -100 WHERE id_czesci= XY_231'; COMMIT: Transakcja to grupa operacji w bazie danych, które jako całość charakteryzuje się zbiorem gwarantowanych właściwości - znanych jako ACID niepodzielność ( z ang. Atomicity ) - wykonują się wszystkie operacje, albo żadna spójność ( z ang. Consistency ) - wszystkie operacje składające się na transakcję działają na spójnym zbiorze danych, a po jej zakończeniu baza danych pozostaje w spójnym stanie izolacyjność ( z ang. Isolation ) - transakcje są od siebie logicznie odseperowane, oddziałują na siebie poprzez dane. Mimo współbieżnego wykonywania, transakcje widzą stan bazy danych tak, jak gdyby były wykonywane w sposób sekwencyjny. trwałość ( z ang. Durability ) - po zatwierdzeniu transakcji zmiany dokonane w jej wyniku są trwałe, nawet w przypadku awarii systemu

Użytkownik realizuje swoje transakcje poprzez polecenia języka SQL kierowane bezpośrednio, albo pośrednio przy użyciu wcześniej przygotowanych aplikacji bazodanowych. Rozpoczęcie transakcji niejawne: pierwsza poprawna instrukcja w sesji użytkownika koniec poprzedniej transakcji jawne: w niektórych systemach bazodanowych polecenie BEGIN TRANSACTION lub START TRANSACTION Zakończenie transakcji jawne: niejawne: polecenie COMMIT zatwierdzenie zmian polecenie ROLLBACK wycofanie zmian poprawne zamknięcie sesji użytkownika ( wylogowanie ) - zatwierdzenie zmian polecenia z grupy DDL lub DCL zatwierdzenie zmian awaria systemu wycofanie zmian Skutki zatwierdzenia transakcji: zwolnienie blokad usunięcie punktów bezpieczeństwa sprawdzenie odroczonych ograniczeń integralnościowych trwały zapis danych widoczność zmian dla innych transakcji Skutki wycofania transakcji: zwolnienie blokad anulowanie zmian stan bazy sprzed transakcji

Punkty bezpieczeństwa tworzenie punktu bezpieczeństwa SAVEPOINT < nazwa_punktu >; usuwanie punktu bezpieczeństwa RELEASE SAVEPOINT < nazwa_punktu >; wycofanie do danego punktu bezpieczeństwa ROLLBACK TO SAVEPOINT < nazwa_punktu >; przykłady: UPDATE pracownicy SET placa = placa + 350 WHERE nr_akt = 8901; SAVEPOINT punkt_sb1; UPDATE pracownicy SET dod_funkcyjny= 1.15*dod_funkcyjny WHERE nr_akt = 8902; SAVEPOINT punkt_sb2; CREATE TABLE robo ( kol NUMBER ): DELETE FROM pracownicy WHERE nr_akt =9120; ROLLBACK TO SAVEPOINT punkt_sb1; ROLLBACK; SQL Error: ORA-01086: punkt zapisywania "PUNKT_SB1" nigdy nie został w tej sesji ustanowiony lub jest niepoprawny Poziomy spójności w bazie danych spójność polecenia wszystkie dane odczytywane przez pojedyncze polecenie, pochodzą z tego samego momentu w czasie momentu rozpoczęcia wykonania polecenia spójność transakcji wszystkie polecenia odczytujące w ramach pojedynczej transakcji dane z bazy danych, będą odczytywały stan z momentu rozpoczęcia transakcji Zagrożenia spójności: awarie, działania użytkowników, współbieżny dostęp do danych Współbieżność równoczesny dostęp wielu transakcji do jednych i tych samych danych anomalie związane ze współbieżnym dostępem do danych: brudny odczyt utracona modyfikacja niepowtarzalny odczyt fantomy Brudny odczyt ( ang. dirty read ) - system pozwala widzieć jednej transakcji niezatwierdzone zmiany wprowadzone przez drugą transakcję, które mogą zostać wycofane.

Utracona modyfikacja ( ang. lost update ) - dwie transakcje równolegle przystępują do aktualizacji tych samych danych i zmiany, wprowadzone przez jedną transakcji, zostają nadpisane przez zmiany z drugiej transakcji. Niepowtarzalny odczyt ( ang. nonrepeatable read/fuzzy read) wynik tego samego zapytania przeprowadzonego wielokrotnie w trakcie trwania transakcji jest różny (transakcja widzi zmiany wprowadzone przez drugą transakcję ). Fatomy (ang. phantom read ) - wynik tego samego zapytania przeprowadzonego wielokrotnie w trakcie trwania transakcji jest różny- powiększa się ( transakcja widzi wiersze wprowadzane przez drugą transakcję) Zadanie uruchom dwie sesje tego samego użytkownika. W pierwszej sesji wykonaj polecenie UPDATE.. zwiększające wynagrodzenie pracownika o nazwisku SKALSKI o 10%. w drugiej sesji temu samemu pracownikowi zwiększ wynagrodzenie o 15%. sprawdź wynagrodzenia w obu sesjach, zatwierdź zmiany i ponownie przekonaj się o wartościach wynagrodzenia pracownika. Standard języka SQL definiuje różne poziomy izolacji dla transakcji SERIALIZABLE ( uszeregowany ) READ COMMITTED ( odczyt zatwierdzonych danych ) REPEATABLE READ ( powtarzalny odczyt ) READ UNCOMMITTED ( odczyt niezatwierdzonych danych ) odczyt danych niezatwierdzonych - zmiany, wprowadzone przez operacje w ramach aktywnej transakcji ( jeszcze nie zatwierdzonej) są widoczne dla innych, równolegle realizowanych transakcji. odczyt zatwierdzonych danych - zmiany, wprowadzone przez operacje w ramach transakcji, są widoczne dla innych transakcji dopiero po zatwierdzeniu transakcji. powtarzalny odczyt - zapobiega anomalii niepowtarzalnego odczytu. odczyt uszeregowany - serializacja na poziomie całej transakcji. Transakcja nie widzi zmian ( zatwierdzonych i niezatwierdzonych ) dokonywanych przez inne transakcje. Zmiany te są widoczne dopiero po jej zakończeniu. Możliwe błędy występujące na danym poziomie izolacji brudne odczyty niepowtarzalne fantomy odczyty READ UNCOMMITTED tak tak tak READ COMMITTED nie tak tak REPEATABLE READ nie nie tak SERIALIZABLE nie nie nie

Zasadniczo domyślnym poziomem izolacji powinien być SERIALIZABLE ale niektóre systemy używają READ COMMITTED Ustawienie poziomu izolacji transakcji dla: transakcji SET TRANSACTION ISOLATION LEVEL {READ COMMITTED SERIALIZABLE }; sesji ALTER SESSION SET ISOLATION_LEVEL = {READ COMMITTED SERIALIZABLE }; określenie trybu dostępu SET TRANSACTION { READ WRITE READ ONLY } Zarządzanie współbieżnością System zarządzania bazą danych stosuje odpowiednie algorytmy zarządzania współbieżnym zbiorem transakcji. Algorytmy synchronizacji współbieżnych transakcji: blokowania dostępu do danych uszeregowanie wynika z kolejności uzyskiwanych blokad znaczników czasowych Blokada ( ang. lock ) - technika kontroli współbieżnego dostępu do danych polegająca na nałożeniu blokady na obiekt, który jest modyfikowany przez transakcję ( w szczególności inne transakcje nie mogą go zmieniać ). Blokady zakładane są automatycznie w momencie wydawania przez użytkownika poleceń modyfikacji danych lub ręcznie poprzez odpowiednie polecenie. Wyróżniamy blokady: wyłączne ( ang. exclusive lock ) współdzielone ( ang. shared lock ) Ziarnistość blokad Rodzaj blokowanego zasobu jest określany jako ziarnistość - granulacja elementów danych :

pojedynczy atrybut wiersz tabeli blok danych tabela a nawet cała baza Nakładanie blokad blokowanie wierszy SELECT < lista_wyrażeń> FROM < tabela > WHERE < warunek_logiczny > FOR UPDATE [ OF < lista_atrybutów > ] [NOWAIT ]; blokowanie tabel LOCK TABLE < tabela > IN < tryb_blokowania > MODE [NOWAIT ]; gdzie tryby blokowania: ROW SHARE, ROW EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE Zakleszczenia ( ang. deadlock ) - stan, w którym dwie lub więcej równoległych transakcji znajduje się w stanie wzajemnego oczekiwania na uwolnienie blokady z potrzebnych zasobów, aby móc kontynuować działanie. System powinien wykryć blokadę i ją zlikwidować wyszukując cykl w grafie oczekiwań (ang. wait-for-graph) i wycofując jedną z należących do cyklu transakcji. Szeregowalność ( ang. serializability) kryterium poprawności kontroli współbieżności, mówiące, że transakcje realizowane równolegle są szeregowalne jeżeli wynik ich działania jest taki sam, jak w wypadku działania sekwencyjnego. Założenia pojedyncze, sekwencyjne transakcje są poprawne wykonywanie sekwencyjne pojedynczych transakcji w dowolnej kolejności daje poprawny i identyczny wynik realizacja współbieżna równoważna realizacji sekwencyjnej, dla tego samego zbioru transakcji, jest również poprawna i daje taki sam wynik. Protokół dwufazowego blokowania zanim transakcja rozpocznie działanie na jakimś obiekcie zakłada na niego blokadę po zwolnieniu blokady transakcja nie może już nakładać nowych blokad. Twierdzenie dwufazowego blokowania jeżeli wszystkie transakcje wypełniają protokół dwufazowego blokowania to wszystkie ich współbieżne realizacje są szeregowalne. Przygotowano na podstawie wykładów dr inż. Olga Siedlecka-Lamch; Bazy Danych