Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Transakcje
Python
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 17.12.2004

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Wiem,z e jesli i=j, czyli transkacja i bedzie transakcja j .... ale kiedy jeszcze i dlaczego (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

CZy jesli Dwie operacje beda typu Read ... czyli czytaly, to te transkacje nie bea konfliktowe (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ( to moj wywod )
Ale nie wiem, nie moge tegi nigdzie w necie znalezc.
Go to the top of the page
+Quote Post
mhs
post
Post #2





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.09.2025 - 11:33