Article View: pl.comp.lang.delphi.bazy-danych
Article #281Re: Blokowanie rekordów
From: Robin Wschód
Date: Mon, 19 Apr 1999 21:39
Date: Mon, 19 Apr 1999 21:39
44 lines
3339 bytes
3339 bytes
Mon, 19 Apr 1999 08:26:38 +0200, Jarek Zgoda <jzgoda@kki.net.pl> napisał(a): >> W InterBase'ie zastosowano metody blokowania optymistycznego. Samo >> otworzenie transakcji i przejście do edycji jednego z wierszy uzyskanego w >> wyniku zapytania nie powoduje zablokowania rekordu. A dlaczego? Dlatego, że >> serwer nie wie, że jest wykonywana edycja rekordu. Wszystkie operacje >> dzieją się na stacji roboczej, która musi powiadomić serwer o chęci >> zablokowania rekordu i uzyskać na to jego zgodę lub nie. To co stosuje >> Psujak to właśnie jest wykorzystanie blokowania InterBase'a. Jeśli dodaje >> on pole do tabeli, którą edytują użytkownicy, a następnie zmienia jego >> wartość, to próba zablokowania tego samego rekordu przez inną transakcje >> skończy się informacją o błędzie zakleszczenia transakcji (deadlock). Na >> tym właśnie polega blokowanie rekordów, a nie na wpisywaniu wartości! Nawet >> jeśli Psujak przy wchodzeniu do edycji nadpisywałby pole wartością 0, a nie >> 1 to i tak rekord będzie zablokowany dla innych transakcji (użytkowników). >> Inaczej trzeba by tylko było obsłużyć sprawdzanie blokady. Blokadę sprawdza >> się przez jej założenie! Jeśli się nie uda i wystąpi deadlock, to znaczy, >> że rekord jest zablokowany, a jeśli założenie blokady się powiedzie, to >> rekord można edytować. >> Mam nadzieję, że treść nie jest zbyt agresywna. Zapraszam do dyskusji na >> ten temat. > >Swietnie. Czyli - nic sie nie da zrobić? przecie napisał jak to zrobić >A chodziło mi tylko o to, jak >sprawdzić, czy żądanie blokady będzie przez serwer rozpatrzone >pozytywnie... po co ?! możesz po prostu użyć serwera >Dowiedziałem się własnie, że IB od wersji 4 ma tabele >systemowe, w których zapisuje dane o blokowaniu wierszy. Zastanawiam się >teraz, jak te informacje wykorzystać w praktyce. Wolałbym, żeby >niepowołane końcówki nie miały dostępu do tabel systemowych. to bez sensu, dostęp do nich jest asynchroniczny, serwer w każdej chwili może zmienić zawartość i ty nie możesz się nią kierować bo może nie być już aktualna, tak samo ustawianie pola z wartością bool jest asynchroniczne, nim klient otrzyma informacje, że jest wolne może być zajęte i odwrotnie, nim klient stwierdzi, że jest zajęte będzie już wolne, poza tym nie musisz
Technical Details
Message-ID:
<37afa1c5.192979079@news.tpnet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!cyfronet!news.nask.pl!orion.cst.tpsa.pl!news.tpnet.pl!not-for-mailReferences:
<3715CA78.F35A7F92@kki.net.pl> <ujBR2.1955$O1.27094@news.tpnet.pl> <01be88ce$1a0db8e0$037f8080@modem> <371ACC9E.A1973FE9@kki.net.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!cyfronet!news.nask.pl!orion.cst.tpsa.pl!news.tpnet.pl!not-for-mail From: Robin Wschód <rwschod@free.polbox.pl> Newsgroups: pl.comp.lang.delphi.bazy-danych Subject: Re: Blokowanie rekordów Organization: rw Reply-To: rwschod@free.polbox.pl Message-ID: <37afa1c5.192979079@news.tpnet.pl> References: <3715CA78.F35A7F92@kki.net.pl> <ujBR2.1955$O1.27094@news.tpnet.pl> <01be88ce$1a0db8e0$037f8080@modem> <371ACC9E.A1973FE9@kki.net.pl> X-Newsreader: Forte Agent 1.5/32.452 MIME-Version: 1.0 Lines: 46 Date: Mon, 19 Apr 1999 21:39:09 GMT NNTP-Posting-Host: 212.160.16.151 X-Complaints-To: abuse@tpsa.pl X-Trace: news.tpnet.pl 924557960 212.160.16.151 (Mon, 19 Apr 1999 23:39:20 MET DST) NNTP-Posting-Date: Mon, 19 Apr 1999 23:39:20 MET DST Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit