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

Podobne dokumenty
Bazy danych 9. SQL Klucze obce Transakcje

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

Bazy danych 9. Klucze obce Transakcje

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

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

Zarządzanie transakcjami

Bazy danych. Andrzej Łachwa, UJ, /15

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

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

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

Transakcje jednocześnie ACID

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

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

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

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

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

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

Oracle PL/SQL. Paweł Rajba.

Właściwości transakcji

Bazy danych 2. Wykład 6 Transakcje

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

Internetowe bazy danych

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

Przechowywanie danych

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

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

Rozproszone i obiektowe systemy baz danych

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

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

Administracja bazami danych

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

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

Transakcje Wykład z bazy danych dla studen

Hbase, Hive i BigSQL

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

Tadeusz Pankowski

OLTP Przetwarzanie Transakcyjne

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

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

Typy tabel serwera MySQL

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

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

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

Bazy danych w sterowaniu

Kopie zapasowe w SQL Server. Michał Bleja

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

Rozproszone bazy danych. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Zarządzanie obiektami bazy danych Oracle11g

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

Transakcyjne przetwarzanie danych

SQL Server. Odtwarzanie baz danych.

Dazy Banych. Michał Rusnarczyk

Tadeusz Pankowski

Bazy Danych. Ćwiczenie 13: transakcje w bazach danych

Tadeusz Pankowski

Administracja i programowanie pod Microsoft SQL Server 2000

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

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

Paweł Rajba

Wielowersyjne metody synchronizacji transakcji

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

:11 BD_1_W9

Zapewnienie wysokiej dostępności baz danych. Marcin Szeliga MVP SQL Server MCT

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

Ćwiczenie 9 współbieŝność

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

Adam Cankudis IFP UAM

Bazy danych Wykład zerowy. P. F. Góra

Pojęcie systemu baz danych

Bazy danych Transakcje

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

Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta?

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

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

Wymagania dotyczące oprogramowania bazodanowego

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA. Przetwarzanie transakcyjne

Podstawy języka SQL - dokończenie TRANSAKCJE 1

Recovery Transakcyjne odtwarzanie bazy danych po awarii

Rozproszone bazy danych 2

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

Administracja i programowanie pod Microsoft SQL Server 2000

Wykład 8. SQL praca z tabelami 5

Podręcznik użytkownika

Wprowadzenie do Hurtowni Danych

System Oracle podstawowe czynności administracyjne

Oracle11g: Wprowadzenie do SQL

SZKOLENIE: Administrator baz danych. Cel szkolenia

Bazy danych 6. Klucze obce. P. F. Góra

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Transakcje W poprzednich częściach instrukcje języka SQL traktowane były jak indywidualne operacje (transakcje)

PRZEGLĄD DOSTĘPNYCH IMPLEMENTACJI STANDARDÓW PRZETWARZANIA TRANS- AKCJI ROZPROSZONYCH (DTP) XA ORAZ TX

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Wykład 5: PHP: praca z bazą danych MySQL

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

ZSE - Systemy baz danych MODELE BAZ DANYCH. Ewolucja technologii baz danych

Bazy danych 2. Wykład 1

Transkrypt:

Bazy danych 6a. Transakcje P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2018

Transakcje Pojedynczy użytkownik ochrona szczególnie wrażliwych fragmentów. Transakcja wykonuje się albo w całości, albo wcale. Jeżeli w trakcie wykonywania transakcji wystapi jakiś bład, cała sekwencję operacji można odwołać, przywracajac bazę do stanu sprzed rozpoczęcia tej sekwencji. System wielodostępny 1. Jak wyżej. 2. Różne procesy klienckie odwołujace się do tych samych tabel nie moga się ze soba kłócić. Copyright c 2009-18 P. F. Góra 6a 2

Spójność danych w bazach rozproszonych oznacza, że każdy serwer przechowujacy bazę lub jej fragment musi zwrócić taka sama odpowiedź na dane zapytanie, gdyby zadać je w tym samym momencie. Wymóg zachowania spójności najmocniej odróżnia relacyjne (transakcyjne) bazy danych od baz danych NoSQL. Copyright c 2009-18 P. F. Góra 6a 3

Zasady ACID (T. Hearder, A. Reuter, 1983) A Atomicity atomowość. Transakcja jest niepodzielna, albo wszystko, albo nic. C Consistency spójność. Transakcja nie może naruszać integralności danych: spójności danych pomiędzy różnymi serwerami przechowujacymi tę sama bazę lub jej fragmenty, a także więzów narzuconych na dane w tabelach. I Isolation izolacja. Jedna transakcja nie może widzieć wyników działania jakiejś innej, niezatwierdzonej transakcji. Można powiedzieć, że transkacja musi odbywać się tak, jakby żadna inna transakcja nie miała miejsca w tym samym czasie. D Durability trwałość. Zmiany wprowadzone w transakcji musza być trwałe, niezależnie od możliwych późniejszych błędów sprzętu lub oprogramowania. Copyright c 2009-18 P. F. Góra 6a 4

Jak to robimy w SQL? START TRANSACTION; START TRANSACTION; zapytanie 1 ; zapytanie 1 ; zapytanie 2 ; zapytanie 2 ;...... zapytanie N ; zapytanie N ; COMMIT; ROLLBACK; Zmiany zostaja zatwierdzone Zmiany zostaja odwołane Copyright c 2009-18 P. F. Góra 6a 5

Wielodostępność co może pójść źle? 1. Niespójność odczytów jedna transakcja może odczytać dane zmieniane przez druga transakcję, chociaż transakcja ta nie zatwierdziła jeszcze zmian. 2. Niepowtarzalność odczytów transakcja odczytuje dane, nieco później odczytuje je ponownie, a odczytane dane sa inne, mimo iż transakcja odczytujaca nie została jeszcze zatwierdzona. 3. Odczyty fantomowe jedna tabela dodaje wiersz, druga transakcja aktualizuje wiersze. Nowy wiersz powinien być zaktualizowany, a nie jest. Copyright c 2009-18 P. F. Góra 6a 6

Poziomy izolacji ANSI Poziom izolacji Niespójność Niepowtarzalność Odczyty odczytów odczytów fantomowe Read uncommitted OK OK OK Read committed NIE OK OK Repeatable read NIE NIE OK Serializable NIE NIE NIE Serializowalność oznacza, że wynik sekwencji przeplatajacych się działań, wykonywanych przez zatwierdzane transakcje, musi ściśle odpowiadać sytuacji, w której wszystkie transakcje wykonywane sa kolejno, jedna po zakończeniu drugiej. Copyright c 2009-18 P. F. Góra 6a 7

Jak realizujemy izolację? W celu zapewnienia izolacji w systemie wielodostępnym, transakcje blokuja tabele (fragmenty tabel), które sa im potrzebne. Najczęściej stosowane mechanizmy to: 2PL Strict two-phase locking: Każda transakcja zakłada blokadę na każdy rekord, który chce odczytać, przed dokonaniem odczytu. Blokady do odczytu moga być współdzielone z innymi transakcjami. Każda transakcja zakłada też wyłaczn a blokadę na każdy fragment danych, który chce zapisać. Wszystkie blokady sa utrzymywane aż do zakończenia transakcji. Jest to algorytm pesymistyczny. OCC Optimistic Concurrency Control: Wiele transakcji moga odczytywać i modyfikować fragment danych bez zakładania blokad. Transakcje zapamiętuja Copyright c 2009-18 P. F. Góra 6a 8

historię dokonywanych odczytów i zapisów. Przed zatwierdzeniem transakcja sprawdza historię w celu wykrycia ewentualnych konfliktów z innymi transakcjami. Jeśli jakieś konflikty zostana wykryte, jedna z transakcji wywołujacych konflikt zostaje odwołana. OCC zakłada, że większość transakcji może się zakończyć pomyślnie bez popadania w konflikt z innymi transakcjami (konflikt polega na żadaniu dostępu do tych samych rekordów bazy OCC domyślnie zakłada niewielkie współzawodnioctwo o dostęp do tych samych danych). Wobec tego na bazę nie sa nakładane blokady, zabezpieczajace przez konfliktami, ale spowalniajace działanie. Aby zminimalizować blokowanie (i opóźnienie innych transakcji), stosuje się mechanizm OCC. Działa on dobrze gdy konflikty sa rzadkie, ale może jednak wygenerować duży koszt, jeżeli konflikty nie sa rzadkie; w tych wypadkach mechanizm 2PL jest efektywnie szybszy. Copyright c 2009-18 P. F. Góra 6a 9

Etapy algorytmu OCC OCC przebiega w następujacych etapach: Begin Rozpocznij transakcję zapisujac timestamp jej rozpoczęcia. Modify Odczytaj dane z bazy i tymczasowo zapisz zmiany (WAL - patrz niżej). Validate Sprawdź, czy inne transakcje nie modyfikowały danych, z których korzystała (czytała lub zapisywała) bieżaca transakcja. Należy sprawdzić tarnsakcje zakończone po rozpoczęciu transakcji bieżacej, niekiedy także inne transakcje, które jeszcze się nie zakończyły. Commit/Rollback Jeśli nie wystapił konflikt, zapisz dane (COMMIT). Jeśli konflikt wystapił, odwołaj transakcję (ROLLBACK). Uwaga! Sprawdzenie, czy wystapił konflikt i decyzja o zatwierdzeniu/odrzuceniu transakcji samo musi mieć charakter operacji atomowej, w przeciwnym razie może wystapić bład typu time of check to time of use (TOCTTOU). Copyright c 2009-18 P. F. Góra 6a 10

Uwaga Instrukcje DDL (Data Description Language), czyli instrukcje tworzace i usuwajace bazy oraz tworzace, usuwajace i modyfukujace tabele nie sa transakcyjne nie można ich wycofać. W MySQL tabele, które chcemy zabezpieczać transakcjami, musza być typu InnoDB. Copyright c 2009-18 P. F. Góra 6a 11

Write-ahead logging WAL Wszystkie zmiany w bazie, zanim zostana ostatecznie zatwierdzone, sa tymczasowo zapisywane w specjalnym pliku, w RDBMS zwanym dziennikiem systemowym. Zapisy w dzienniku systemowym sa indeksowane za pomoca timestamp, z reguły z dokładnościa do milisekund. Dziennik systemowy służy do sprawdzania, czy nie wystapił konflikt pomiędzy transakcjami, odtwarzania stanu systemu w przypadku awarii. Dopiero jeśli dla jakiejś transakcji zostanie wydane polecenie COMMIT, zmiany wprowadzane przez tę transakcję sa przepisywane z dziennika systemowego do tabel. Copyright c 2009-18 P. F. Góra 6a 12

Oprócz dziennika systemowego niekiedy (w systemach rozproszonych praktycznie zawsze) istnieje też undo log plik zawierajacy informację o tym, jakie zmiany być może w przyszłości będzie należało wycofać. Copyright c 2009-18 P. F. Góra 6a 13

Two-phase COMMIT 2PC W przypadku rozproszonych baz danych lub baz przechowywanych w systemie skalowania poziomego, należy szczególnie zadbać o spójność (consistency) danych przechowywanych na różnych serwerach. Najczęściej robi się to za pomoca protokołu Two-phase COMMIT (2PC). Jeden węzeł sieci, koordynator, działa jako master. Pozostałe węzły tworza kohortę. 2PC jest rozpoczynane przez koordynatora. Członkowie kohorty albo zgadzaja się na zapisanie zmian, albo wysyłaja sygnał o konieczności przerwania transakcji. W wielu architekturach dla różnych transakcji różne węzły moga być koordynatorami. Copyright c 2009-18 P. F. Góra 6a 14

Faza commit request (faza głosowania): Koordynator wysyła zapytanie o gotowość COMMIT do wszystkich członków kohorty i czeka na ich odpowiedź. Każdy z członków kohorty wykonuje transakcję aż do punktu, w którym należałoby wydać polecenie COMMIT i przygotowuje swój undo log. Członkowie kohorty, którym udało się wykonać powyższy punkt, wysyłaja koordynatorowi informację, że zgadzaja się na zatwierdzenie transakcji. Członkowie kohorty, którzy napotkali bład uniemożliwiajacy zatwierdzenie transakcji, wysyłaja koordynatorowi informację, że transakcji nie można zatwierdzić. Copyright c 2009-18 P. F. Góra 6a 15

Faza commit (zakończenie transakcji): Jeśli wszyscy członkowie kohorty potwierdza gotowość do wykonania transakcji, koordynator wysyła polecenie COMMIT do wszystkich członków kohorty, członkowie kohorty zatwierdzaja transakcję na swoich węzłach i zwalniaja wszystkie blokady nałożone na dane w zwiazku z dana transakcja, członkowie kohorty wysyłaja potwierdzenie do koordynatora, koordynator zatwierdza transakcję i zwalnia blokady po otrzymaniu wszystkich potwierdzeń. Copyright c 2009-18 P. F. Góra 6a 16

Jeśli nie ma zgody na transakcję, czyli gdy którykolwiek z członków kohorty zasygnalizuje w fazie głosowania brak zgody na transakcję lub gdy przekroczony zostanie czas oczekiwania (timeout) koordynatora, koordynator wysyła polecenie ROLLBACK do wszystkich członków kohorty, każdy z członków kohorty wycofuje transakcję korzystajac ze swojego undo log, po czym zwalnia wysztkie blokady nałożone na dane w zwiazku z dana transakcja, członkowie kohorty wysyłaja powiadomienia do koordynatora, koordynator kończy (wycofuje) transakcję po otrzymaniu wszystkich powiadomień, po czym zwalnia wszystkie blokady nałożone na dane w zwiazku z dana transakcja. Copyright c 2009-18 P. F. Góra 6a 17

Największa wada protokołu two-phase COMMIT jest blokowanie. Członkowie kohorty po wysłaniu zgody na transakcję do koordynatora, czekaja blokujac dane, aż otrzymaja ostateczne COMMIT lub ROLLBACK od koordynatora. Jeśli koordynator ulegnie w tym czasie awarii lub jeśli utracona zostanie komunikacja pomiędzy koordynatorem a członkami kohorty, niektórzy członkowie kohorty nie będa wiedzieli, w jaki sposób maja zakończyć transakcję. Pozostana w stanie zawieszenia, utrzymujac blokady nałożone na tabele. Copyright c 2009-18 P. F. Góra 6a 18

Ryzyko zwiazane z transakcjami 1. Długo działajace transakcje blokuja dostęp innych użytkowników do danych, na których działa transakcja, dopóki nie zostanie ona zatwierdzona lub odwołana. 2. Należy unikać transakcji wtedy, gdy wymagana jest interakcja z użytkownikiem należy najpierw zebrać wszytskie dane, a dopiero potem rozpoczynać transakcję. Copyright c 2009-18 P. F. Góra 6a 19

(B)lokowanie tabel LOCK TABLES nazwa tabeli [READ [LOW PRIORITY] WRITE]; Tryb READ chcę czytać tabelę i w tym czasie nie zezwalam innym na zapis. Tryb WRITE chcę zmieniać zawartość tabeli i w tym czasie nie zezwalam innym ani na zapis, ani na odczyt. Copyright c 2009-18 P. F. Góra 6a 20

Tryb LOW PRIORITY WRITE pozwala innym watkom na założenie blokady READ; w tym czasie watek, który chce nałożyć blokadę LOW PRIORITY WRITE, musi czekać, aż tamten watek zwolni blokadę. UNLOCK TABLES; zwalnia wszystkie zablokowane przez dany watek tabele. Tabel nie należy blokować zbyt długo lub niepotrzebnie. Uwaga praktyczna: Aplikacja powinna najpierw zebrać wszystkie potrzebne dane od użytkownika, później inicjować transakcję lub blokować tabele. Copyright c 2009-18 P. F. Góra 6a 21