BAZY DANYCH. Transakcje. opracowanie: Michał Lech

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 2. Wykład 6 Transakcje

Właściwości transakcji

Bazy danych. Andrzej Łachwa, UJ, /15

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

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

Transakcje jednocześnie ACID

Oracle PL/SQL. Paweł Rajba.

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

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych 9. SQL Klucze obce 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

Tadeusz Pankowski

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

Ćwiczenie 9 współbieŝność

Zarządzanie transakcjami

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

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

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

Bazy danych 9. Klucze obce Transakcje

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

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

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

Przechowywanie danych

Bazy danych Transakcje

Podstawy języka SQL - dokończenie TRANSAKCJE 1

Transakcje Wykład z bazy danych dla studen

OLTP Przetwarzanie Transakcyjne

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

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

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

Wykład 8. SQL praca z tabelami 5

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

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

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

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

Transakcyjne przetwarzanie danych

Wielowersyjne metody synchronizacji transakcji

Administracja i programowanie pod Microsoft SQL Server 2000

Obowiązuje od wersji

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA. Przetwarzanie transakcyjne

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

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

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

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

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

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

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

Bazy danych i usługi sieciowe

Administracja bazami danych

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

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

Relacyjne bazy danych. Podstawy SQL

Paweł Rajba

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

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

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

Adam Cankudis IFP UAM

SQL Server. Odtwarzanie baz danych.

Internetowe bazy danych

Transakcje. Bazy danych 155

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

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

Bazy danych i systemy zarzadzania

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL

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

Wykład 05 Bazy danych

SQL (ang. Structured Query Language)

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

5. Administracja kontami uŝytkowników

Paczki przelewów w ING BankOnLine

Zarządzanie strukturą bazy danych Oracle11g

Konta uŝytkowników. Konta uŝytkowników dzielą się na trzy grupy: lokalne konta uŝytkowników, domenowe konta uŝytkowników, konta wbudowane

Instrukcja obsługi dla Wnioskodawcy

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

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

Dokumentacja instalacji aktualizacji systemu GRANIT wydanej w postaci HotFix a

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

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

Wyzwalacze (triggery) Przykład

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

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

Transakcje w systemach Java Enterprise Korzystanie z baz danych w serwerach aplikacji

Hbase, Hive i BigSQL

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

Struktura drzewa w MySQL. Michał Tyszczenko

15. Funkcje i procedury składowane PL/SQL

Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do

Mechanizm transakcji w relacyjnych i obiektowych bazach danych

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

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

Wypełnianie protokołów systemie USOSweb

Kursory. A. Pankowska 1

Instrukcja instalacji certyfikatu kwalifikowanego w programie Płatnik. wersja 1.8

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

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

Transkrypt:

BAZY DANYCH Transakcje opracowanie: Michał Lech

Plan wykładu 1. Transakcje - co to jest? 2. Mechanizmy transakcji 3. Reguły ACID 4. Niekorzystne zjawiska 5. Poziomy izolacji 6. Polecenia PostgreSQL transakcji 7. Jak tworzyć transakcje?

Transakcje - co to jest? Transakcje - zespół operacji, które powinny być wykonane w całości lub w ogóle Przykład transakcji - przelew bankowy

Transakcje - co to jest? Transakcja 1 Transakcja 2 t0 konto = Odczyt; t1 konto = Odczyt; t2 konto = konto + 1000; t3 konto = konto + 1000; t4 Zapis; t5 Zapis;

Mechanizmy transakcji 3 etapy transakcji: rozpoczęcie wykonanie zamknięcie

Mechanizmy transakcji W zaawansowanych systemach wykonywanych jest jednocześnie wiele transakcji (np. system bankowy) Część operacji musi być wykonywana w określonej kolejności Istotne jest, aby operacji transakcyjne trwały jak najkrócej

Mechanizmy transakcji Logowanie transakcji kaŝdy etap transakcji jest logowany, dzięki czemu moŝliwe jest odtworzenie stanu bazy danych sprzed transakcji, która nie została zamknięta (np. w wyniku awarii systemu)

Reguły ACID A - atomicity - atomowość transakcji oznacza, Ŝe kaŝda transakcja musi być wykonana albo w całości albo w ogóle C - consistency - spójność oznacza, Ŝe po wykonaniu transakcji system pozostanie spójny; integralność nie zostanie naruszona I - isolation - jeśli transakcje wykonują się współbieŝnie to nie widzą zmian przez siebie wprowadzanych; istnieją róŝne poziomy izolacji D - durability - trwałość oznacza, Ŝe system potrafi uruchomić się i udostępnić spójne dane, zapisane w ramach transakcji, na przykład po awarii systemu; efekty wykonania transakcji są trwałe

Niekorzystne zjawiska Negatywne zjawiska podczas współbieŝnego wykonywania transakcji na tych samych danych: utracona zmiana (ang. lost update) zmiany wprowadzone przez jedną z transakcji są tracone brudny odczyt (ang. dirty read) transakcja odczytuje dane zapisane przez inną, niezatwierdzoną transakcję niepowtarzalny odczyt (ang. non-repeatable read) w trakcie dwukrotnego odczytu tych samych danych mogą one ulec zmianie (w trakcie tej transakcji zostały zmodyfikowane przez inną, zatwierdzoną transakcję) niewidzialne wiersze (ang. phantom rows)

Niekorzystne zjawiska Utracona zmiana (ang. lost update) t Transakcja 1 Transakcja 2 t1 Odczyt t2 Odczyt t3 Zmiana t4 Zmiana t5 Commit t6 Commit Zmiany wykonane przez transakcję 2 są utracone.

Niekorzystne zjawiska Brudny odczyt (ang. dirty read) t Transakcja 1 Transakcja 2 t1 Odczyt t2 Zmiana t3 Odczyt t4 Rollback t5 Commit Transakcja 1 odczytuje dane po zmianie wykonanej przez operacje transakcji 2, ale kolejną operacją transakcji 2 jest wycofanie, zatem to co odczytała transakcja 1 faktycznie nigdy nie zaistniało.

Niekorzystne zjawiska Niepowtarzalny odczyt (ang. non-repeatable read) t Transakcja 1 Transakcja 2 t1 Odczyt t2 Odczyt t3 Zmiana t4 Odczyt t5 Commit t6 Commit Transakcja 1 odczytuje dwukrotnie ten sam wiersz, ale za drugim razem otrzymuje inne dane.

Niekorzystne zjawiska Niewidzialne wiersze (ang. phantom rows) t Transakcja 1 Transakcja 2 t1 t2 t3 SELECT * FROM Autorzy WHERE imie = Stefan ; SELECT * FROM Autorzy WHERE imie = Stefan ; INSERT INTO Autorzy(imie) VALUES ( Stefan ) ; W czasie t4 transakcja 1 widzi dane, mimo Ŝe wcześniej (t1 = t) ich nie widziała (w jej trakcie zostały dodane przez transakcję 2).

Poziomy izolacji Poziom izolacji określa jak bardzo wykonanie jednej transakcji jest niezaleŝne od wykonania innej (jakie negatywne zjawiska są dopuszczalne), w sytuacji kiedy transakcje wykonywane są współbieŝnie

Poziomy izolacji Read uncommitted - transakcja moŝe odczytywać dane, na których operują inne transakcje Read committed - transakcja moŝe odczytywać tylko dane zapisane Repeatable read - transakcja nie moŝe czytać ani zapisywać danych, odczytywanych bądź zapisywanych w tym samym momencie przez inną transakcję Serializable - pełna izolacja

Poziomy izolacji Poziom Brudny odczyt Niepowtarzalny odczyt Read uncommitted Niewidzialne wiersze moŝliwy moŝliwy moŝliwe Read committed moŝliwy moŝliwe Repeatable read MoŜliwe Serializable

Poziomy izolacji Read uncommitted UŜywane z trybem dostępu READ ONLY UŜywane dla długich transakcji, kiedy nie potrzebujemy 100% poprawnych wyników

Poziomy izolacji Read committed Kompromis pomiędzy wydajnością, a poziomem izolacji

Poziomy izolacji Repeatable read ObniŜona wydajność Poziom stosowany, kiedy wykonywanych jest wiele zmian jednocześnie

Poziomy izolacji Serializable 100% poprawności NajniŜsza wydajność Poziom stosowany kiedy wymagane jest 100% poprawności albo wykonywane są mało złoŝone, szybko wykonujące się transakcje

Poziomy izolacji Transakcje powinny być wykonywane na moŝliwie najniŝszym poziomie izolacji, tak aby zapewnić wymaganą poprawność transakcji, np. Nie naleŝy uŝywać SERIALIZABLE tam gdzie wystarczy READ COMMITED (wydajność)

Polecenia PostgreSQL transakcji BEGIN - rozpoczęcie transakcji START TRANSACTION - j.w. COMMIT - zatwierdzenie transakcji; zapisanie w bazie rezultatów działania operacji transakcyjnych ROLLBACK - zakończenie transakcji bez zapisywania rezultatów (wycofanie wszystkich zmian) lub powrót do wskazanego punktu [TO SAVEPOINT nazwa]

Polecenia PostgreSQL transakcji START TRANSACTION [tryb_transakcji] gdzie tryb_transakcji: ISOLATION LEVEL { SERIALIZABLE REPEATABLE READ READ COMMITTED READ UNCOMMITTED } READ WRITE READ ONLY

Polecenia PostgreSQL transakcji START TRANSACTION [tryb_transakcji] gdzie tryb_transakcji: ISOLATION LEVEL { SERIALIZABLE REPEATABLE READ READ COMMITTED READ UNCOMMITTED } READ WRITE READ ONLY

Polecenia PostgreSQL transakcji SET TRANSACTION transaction_mode [,...] SET TRANSACTION ustawia sposób działania bieŝącej transakcji. Nie ma wpływu na następne transakcje.

Polecenia PostgreSQL transakcji SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [,...] SET SESSION CHARACTERISTICS ustawia domyślny poziom izolacji dla wszystkich transakcji w sesji. Poziom ten moŝe zostać przedefiniowany przez SET TRANSACTION dla kaŝdej pojedynczej transakcji.

Polecenia PostgreSQL transakcji W Postgresie: READ UNCOMMITTED = READ COMMITTED REPEATABLE READ = SERIALIZABLE Domyślnie: READ COMMITTED

Jak tworzyć transakcje? Przykład: 1. Odczyt danych z bazy 2. Wyświetlenie danych 3. Wpisywanie przez uŝytkownika nowych danych w udostępniony formularz 4. Aktualizacja danych w bazie Problem: W którym miejscu naleŝy zacząć transakcję?

Jak tworzyć transakcje? Rozwiązanie: PoniewaŜ krok 3 moŝe trwać bardzo długo transakcję naleŝy rozpocząć dopiero w kroku 4. NaleŜy sprawdzić czy dane uprzednio pobrane i wyświetlone nie zostały w międzyczasie zmienione przez inną transakcję.

Jak tworzyć transakcje? Rozwiązanie (c.d.): 1. Odczyt danych 2. Wyświetlenie danych i zapamiętanie ich 3. Wpisywanie przez uŝytkownika nowych danych w udostępniony formularz 4. START TRANSACTION 5. Ponowny odczyt danych 6. Porównanie odczytanych danych z danymi zapamiętanymi 7. Wykonanie COMMIT jeśli są takie same, jeśli inne to albo COMMIT albo ROLLBACK (zaleŝnie od specyfiki operacji) i powiadomienie uŝytkownika o takiej sytuacji

Jak tworzyć transakcje? Rozwiązanie (c.d.): Poziom izolacji: REPEATABLE READ lub SERIALIZABLE (czyli w postgresie SERIALIZABLE)