Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Transakcje
Forum PHP.pl > Forum > Bazy danych
Python
Witam

Mam taki problem, a raczej zadanie.

Sa 2 dowolne transakcje Ti i Tj i kazda z nich ma jedna operacje Oi, naley do transkacji Ti i Pj nalezaca do transkacji Tj ....

Kiedy te transakcje nie beda konfliktowe questionmark.gif

Wiem,z e jesli i=j, czyli transkacja i bedzie transakcja j .... ale kiedy jeszcze i dlaczego questionmark.gif

CZy jesli Dwie operacje beda typu Read ... czyli czytaly, to te transkacje nie bea konfliktowe questionmark.gif ( to moj wywod )
Ale nie wiem, nie moge tegi nigdzie w necie znalezc.
mhs
Za bardzo nie rozumiem do końca tego przykładu, który podałeś, ale wydaje mi się, że chodzi Ci o poziomy izolacji. Z tym zagadnieniem wiążą się takie zjawiska jak tzw.:
- brudny odczyt (ma miejsce wtedy, gdy pierwsza transakcja np. uaktualnia jeden wiersz, a w obrębie innej sesji – transakcji możliwy jest odczyt już zmienionej krotki; jeżeli odczyt brudny nie jest dozwolony do wywołania COMMIT odczyt zmienionej wartości nie będzie możliwy)
- odczyty nie dające się powtórzyć (występuje wówczas gdy w obrębie transakcji odczytujesz pewne dane, następnie ponownie pobierasz te same dane… i okazuje się ze nie są już one takie same)
- odczyty widmo (ma miejsce wtedy gdy do tabeli dodawany jest nowy wiesz, wówczas gdy w obrębie innej transakcji dokonywana jest aktualizacja i nowy wiesz powinien być dodawany a w rzeczywistości nie jest)
- utracone aktualizacje.

Teraz na przykładzie PostgreSQL’a: Możesz zdefiniować poziom izolacji:
READ UNCOMMITED
READ COMMITED
REPEATABLE READ
SERIALIZABLE

W trybie READ UNCOMMITED:
- brudny odczyt: możliwy
- odczyt nie dający się powtórzyć: możliwy
- odczyty widmo: możliwe


W trybie READ COMMITED:
- brudny odczyt: niemożliwy
- odczyt nie dający się powtórzyć: możliwy
- odczyty widmo: możliwe


W trybie REPEATABLE READ:
- brudny odczyt: niemożliwy
- odczyt nie dający się powtórzyć: niemożliwy
- odczyty widmo: możliwe

W trybie SERIALIZABLE:
- brudny odczyt: niemożliwy
- odczyt nie dający się powtórzyć: niemożliwy
- odczyty widmo: niemożliwe


Z tego, co wiem READ COMMITED i REPEATABLE READ nie były dostępne w starszych wersjach PostgreSQL’a, na wersji 8 RC1 jest możliwe definiowanie tych stanów, ale nie wiem jak one się zachowują. Tryb możesz zmienić za pomocą:
SET TRANSACTION ISOLATION LEVEL [ READ UNCOMMITED || READ COMMITED || REPEATABLE READ || SERIALIZABLE ]
Nie wiem jak jest w MySQL’u pewnie w nowej wersji 4.1.X jest coś podobnego, albo działa w jednym z tych (lub podobnych trybów).


PS. Nie wiem czy do końca to jest odpowiedź na Twoje pytanie, ale mam nadzieję, że się przyda.

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.