Transakcje cd.
Piotr Krum - 27-10-2005 23:56
Transakcje cd.
Witam. Pisalem nie dawno o transakcjach; to bedzie kontynuacja :]. Jest tak: aplikacja webowa, MS SQL, Hibernate, JSP i problemy z synchronizacja. Koniecznie chce uniknac takiej sytuacji: 1. Pobieram jakis wiersz z bazy <-- tu zostaje usuniety wspolbierznie :] 2. Robie na usunietym obiekcie operacje (np. probuje uzyc jego klucza w jakiejs relacji) == tragedia :]
Problem sa glownie delete, updaty malo wazne. Ze strony kodu aplikacji, nie da rade sie przed zabezpieczyc. Ustawilem REPETABLE READ i transakcja wspolbierzna jest blokowana na czas pierwszej, co jest zadowalajace. Niestety ;(, pojawil sie inny problem:
1. Pobieram jakis wiersz z bazy 2. Modyfikuje wiersz 1. Druga trans. tez 2. Druga probuje modyfik./usuwac 3. Zatwierzdam 3. Zatwierzadm - ta sie sypnie z powodu deadlocka Jest to sytuacja naturalna, której jednak chcial bym uniknac. Ustawienie drugiej na nizszy poziom nie jest mozliwe (hibernate :/) Ustawienie transakcji na READ COMMITED i pobieranie wierszy, które nie moga byc usuniete za pomoca select .. for update rozwiazuje problem z tym, że: 1. Nie ma 100%, że wszystkie czule na to miejsca sa zabezpieczone; 2. Nie wszystkie bazy obsluguja to polecenie (na pewno Oracle i MS SQL). Jakies inne pomysly, jak to rozwiazac (moze SERIALIZABLE :)
Thx i pozdro
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
artiun - 27-10-2005 23:57
Piotr Krum napisał(a): > Witam. > Pisalem nie dawno o transakcjach; to bedzie kontynuacja :]. Jest tak: > aplikacja webowa, MS SQL, Hibernate, JSP i problemy z synchronizacja. > Koniecznie chce uniknac takiej sytuacji: Nie ma > 1. Pobieram jakis wiersz z bazy > <-- tu zostaje usuniety wspolbierznie :] > 2. Robie na usunietym obiekcie operacje (np. probuje uzyc jego klucza w > jakiejs relacji) == tragedia :] > > Problem sa glownie delete, updaty malo wazne. Ze strony kodu aplikacji, nie > da rade sie przed zabezpieczyc. Ustawilem REPETABLE READ i transakcja > wspolbierzna jest blokowana na czas pierwszej, co jest zadowalajace. > Niestety ;(, pojawil sie inny problem: Nie ma > > 1. Pobieram jakis wiersz z bazy > 2. Modyfikuje wiersz > 1. Druga trans. tez > 2. Druga probuje modyfik./usuwac > 3. Zatwierzdam > 3. Zatwierzadm - ta sie sypnie z powodu > deadlocka nie jest naturalną > Jest to sytuacja naturalna, której jednak chcial bym uniknac. Ustawienie > drugiej na nizszy poziom nie jest mozliwe (hibernate :/) Ustawienie > transakcji na READ COMMITED i pobieranie wierszy, które nie moga byc Nie ma > usuniete za pomoca select .. for update rozwiazuje problem z tym, że: 1. Nie > ma 100%, że wszystkie czule na to miejsca sa zabezpieczone; 2. Nie wszystkie > bazy obsluguja to polecenie (na pewno Oracle i MS SQL). Oooo przepraszamy, że my nie wiemy o jaką bazę TOBIE chodzi. > Jakies inne pomysly, jak to rozwiazac (moze SERIALIZABLE :) usunąć, napisać na nowo (dołączyć w temacie o jaki system bd (bd) chodzi) -- Artur
Piotr Krum - 27-10-2005 23:57
artiun <artiun@wp.pl> napisał(a):
> Piotr Krum napisał(a): > > Witam. > > Pisalem nie dawno o transakcjach; to bedzie kontynuacja :]. Jest tak: > > aplikacja webowa, MS SQL, Hibernate, JSP i problemy z synchronizacja. > > Koniecznie chce uniknac takiej sytuacji: > Nie ma > > 1. Pobieram jakis wiersz z bazy > > <-- tu zostaje usuniety wspolbierznie :] > > 2. Robie na usunietym obiekcie operacje (np. probuje uzyc jego klucza w > > jakiejs relacji) == tragedia :] > > > > Problem sa glownie delete, updaty malo wazne. Ze strony kodu aplikacji, nie > > da rade sie przed zabezpieczyc. Ustawilem REPETABLE READ i transakcja > > wspolbierzna jest blokowana na czas pierwszej, co jest zadowalajace. > > Niestety ;(, pojawil sie inny problem: > Nie ma > > > > 1. Pobieram jakis wiersz z bazy > > 2. Modyfikuje wiersz > > 1. Druga trans. tez > > 2. Druga probuje modyfik./usuwac > > 3. Zatwierzdam > > 3. Zatwierzadm - ta sie sypnie z powodu > > deadlocka > nie jest naturalną
Jest naturalna. Druga tez chce miec odczyt powtarzalny, tez zaklada blodady.
> > Jest to sytuacja naturalna, której jednak chcial bym uniknac. Ustawienie > > drugiej na nizszy poziom nie jest mozliwe (hibernate :/) Ustawienie > > transakcji na READ COMMITED i pobieranie wierszy, które nie moga byc > Nie ma > > usuniete za pomoca select .. for update rozwiazuje problem z tym, że: 1. Nie > > ma 100%, że wszystkie czule na to miejsca sa zabezpieczone; 2. Nie wszystkie > > bazy obsluguja to polecenie (na pewno Oracle i MS SQL). > Oooo przepraszamy, że my nie wiemy o jaką bazę TOBIE chodzi. > > Jakies inne pomysly, jak to rozwiazac (moze SERIALIZABLE :) > usunąć, napisać na nowo (dołączyć w temacie o jaki system bd (bd) chodzi)
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
artiun - 27-10-2005 23:57
Piotr Krum napisał(a): >>> 3. Zatwierzadm - ta sie sypnie z powodu >>> deadlocka >> >>nie jest naturalną > Jest naturalna. Druga tez chce miec odczyt powtarzalny, tez zaklada blodady. Zostawię to - niech Cię zjedzą. Nie ma takiej opcji, w roku 2005.
-- Artur
Piotr Krum - 27-10-2005 23:57
artiun <artiun@wp.pl> napisał(a):
> Piotr Krum napisał(a): > >>> 3. Zatwierzadm - ta sie sypnie z powodu > >>> deadlocka > >> > >>nie jest naturalną > > Jest naturalna. Druga tez chce miec odczyt powtarzalny, tez zaklada blodady. > Zostawię to - niech Cię zjedzą. > Nie ma takiej opcji, w roku 2005. > A ja nie ... :] Za pomoca transakcji faktycznie nie da rady. To jak sobie z tym poradzic??
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Robert Grabowski - 27-10-2005 23:57
Piotr Krum wrote: > Witam.
[...]
Jeżeli używasz hibernate, to po odczytaniu musisz ten wiersz zablokować w bazie:
session.lock(_object_, LockMode.UPGRADE);
pozdrawiam Robert Grabowski
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?=
=?iso-8859-2?q?=5BD=B3ugie=5D?= javax.transaction.SystemException z hibernate.
PL/pgSQL jak =?ISO-8859-2?Q?u=BFy=E6_transakcji=2E?=
[msssql, transact-sql] prosze o zapytanie ktore odzwierciedlistrukturę bazy
[MS SQL 2000] Jak przeniesc Transaction Log na inny server.
=?utf-8?Q?oracle_xe=28nie_tylko=29_-_instancja?==?utf-8?Q?_na_p=C5=82ycie_CD?=
[MS SQL] System transakcyjny wybieranie kolejnych rekordow
[MS SQL]Log transakcji+restore+info
(MYSQL) INSERT INTO (table) SELECT * i transakcje
Mssql 2000 - replikacja transakcyjna + merge
zanotowane.pldoc.pisz.plpdf.pisz.plmorebeer.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|