![]() |
![]() ![]() |
![]() |
![]()
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. |
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 27.09.2025 - 11:33 |