jesteś w >> podstawy >>transakcje
Transakcje
Ogólnie
Jest to zbiór operacji na bazie danych, które stanowią pewną całość. Powinny zostać wykonane wszystkie albo żadna z nich. Nie ma mowy o częściowym wykonaniu. Warunki jakie powinny spełniać transakcje są dokładniej opisane w zasadach ACID.
W tym kursie przedstawione zostanie działanie transakcji w
PostgreSQL. W tym języku transakcje opisane są poprzez 3 frazy :
- BEGIN WORK - rozpoczęcie transakcji
- COMMIT WORK - wszystkie elementy wchodzące w skład transakcji są kompletne i powinny zostać zatwierdzone. Od tej pory mają być dostepne dla wszystkich jednoczesnych transakcji oraz wszystkich kolejnych.
- ROLLBACK WORK - transakcja ma zostać porzucona, a zmiany przez nią dokonane na bazie danych mają zostać anulowane
ACID
ACID definiuje warunki jakie transakcja musi spełnić.- Atomic ( niepodzielność ) - Transakcja mimo tego, że jest zbiorem działań musi zostać wykonana jako jedna jednostka. Musi odbywać się w jednym momencie i nie może zostać podzielona na podzbiory.
- Consistent ( spójność ) - System musi być spójny po zakończeniu transakcji
- Isolatation ( odizolowanie ) - Każda transakcja musi być wykonywana niezależnie od innych transakcji, które mogą być wykonywane w tym samym czasie
- Durability ( trwałość ) - Wykonana transakcja musi zostać utrwalona na stałe.
Zjawiska niepożądane
- brudny odczyt - odczyt wewnątrz transakcji pewnych danych, które zmienionych przez inną transakcję , która nie została zatwierdzona
- odczyty nie dające się powtórzyć - odczyt zbioru danych, który przy ponownym odczycie tych samych danych daje zupełnie inny rezultat
- odczyty widmo - występuje, gdy jedna transakcja odczytuje lub aktualizuje tabele, a druga transakcja w tym czasie dodała nowy wiersz, który powinien zostać dodany później, problem podobny do zjawiska poprzedniego
- utracone aktualizacje - do bazy danych zapisywane są dwie rózne aktualizacje i druga zmiana powoduje, że pierwsza zostaje utracona
Poziomy izolacji
Wyróżnia sie następujące poziomy izolacji transakcji- READ UNCOMMITTED - możliwy brudny odczyt, odczyt nie dający się powtórzyć i odczyt widmo
- READ COMMITTED - niemożliwy brudny odczyt, możliwy odczyt nie dający się powtórzyć i odczyt widmo
- REPEATABLE READ - niemożliwy brudny odczyt i odczyt nie dający się powtórzyć, możliwy odczyt widmo
- SERIALIZABLE - zaden z niepozadanych odczytów nie jest mozliwy
Trybem domyślnym jest READ COMMITTED
Poziom izolacji można ustalić za pomocą poniższej składni :
set transaction isolaction level { nazwa_poziomu_izolacji }
[ wróć na górę strony ]