🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #183306

Re: Transakcje

#183306
From: Sebastian Kolski
Date: Tue, 07 Jul 2009 07:09
69 lines
3922 bytes
Adam K. wrote:
> Witam,
> Użytkownik "Sławomir Szyszło" <slaszysz@CIACHTOlist.pl> napisał w 
> wiadomości news:h2tt2q.2lk.1@slaszyszCIACHTO.list.pl...
>> Dnia Mon, 6 Jul 2009 21:51:01 +0200, "Adam K." <akobylin@nospam.op.pl>
>> wklepał(-a):
>>
>>> Chyba jednak nie, gdy rozpoczne transakcje w trybie read commited, 
>>> wykonam
>>> insert do bazy (nie wiem czy to ma znaczenie, ale dodawanie przy pomocy
>>> procedury skladowanej), to póki nie zrobie COMMIT/ROLLBACK inny 
>>> proces nie
>>> moze odczytac zadnych rekordów z tabelki.
>>
>> Odczytać może, ale nie te wstawione. ;)
> 
>>
>> Napisz może co masz na myśli tu:
>> "Podczas tego importu chciałbym aby baza w zakresie danych przed 
>> rozpoczęciem
>> importu była dostępna dla pozostałych użytkowników."
>>
>> Import oznacza dodanie danych, aktualizacje czy usuwanie? A może mix tego
>> wszystkiego?
>>
> 
> Import danych oznacza:
> 1. Usunięcie części danych
> 2. Dodanie brakujących
> 2. Modyfikacji (aktualizacji) części rekordów już istniejących.
> 
> Chciałbym osiągnąć taki efekt, że jeśli przed rozpoczęciem importu 
> tabelka Produkty miała np. 10 rekordów, to do zakończenia importu (czyli 
> wykonania COMMIT) pozostali użytkownicy widzą te rekordy niezmienione.
> Import część z tych rekordów usunie, część zmieni a część zmodyfikuje, w 
> rezultacie czego np. w tabeli pozostanie 5 rekordów niezmienionych, 3 
> zostaną skasowane, 2 zmodyfikowane, a 5 zostanie dodanych całkiem 
> nowych. Tak przygotowane rekordy wystarczy jeśli będą dostępne po 
> wykonaniu COMMIT.
> 
> Problem w tym, że jeśli mam READ_COMMITED, to do czasu wykonania COMMIT, 
> jakikolwiek SELECT z tabelki Produkty "zawiesza" się. Jeśli w określonym 
> czasie dotrze do serwera COMMIT, SELECT innego usera się wykona (zobaczy 
> on tabelkę już po zmianach), jeśli natomiast nie zdąży - klient 
> wykonujący SELECT z tej tabeli otrzyma wyjątek "Limit czasu 
> przekroczony" zamiast pobrać rekordy, które były dostępne przed 
> rozpoczęciem transakcji.
> Oczekiwany efekt do tej pory udało mi się osiągnąć tylko przy poziomie 
> izolacji transakcji typu SNAPSHOT...
> 
> Mam nadzieję, że teraz jest już jasne z czym mam problem :)
> 
> Pozdrawiam
> 
> Adam
> 

Jedyne wyjaśnienie dlaczego tak się dzieje, jakie przychodzi mi do głowy, to 
takie, że aplikacja używa pojedynczego połączenia do bazy danych, zarówno dla 
importu jak i dla użytkowników. Wtedy rzeczywiście jeśli połączenie jest zajęte 
przez transakcję importową inne polecenia wydane na tym połączeniu "zwisną". 
Jeśli tak nie jest to nie wydaje mi się, aby opisane zachowanie było możliwe. 
Podstawą w bazach danych jest możliwość jednoczesnego dostępu do danych przez 
wielu użytkowników. A takie zachowanie oznaczało by to, że na raz z bazą może 
pracować dokładnie jedna osoba.

Pozdrawiam

Sebastian
Technical Details
Message-ID: <h2usc5$9ct$1@achot.icm.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!not-for-mail
References: <h2ti2l$1vo$1@news.onet.pl> <4ba0026d-5f7f-4fe5-8669-103dd4c3fa7d@s31g2000yqs.googlegroups.com> <h2tkja$8tr$1@news.onet.pl> <h2tt2q.2lk.1@slaszyszCIACHTO.list.pl> <h2ul9o$lg$1@news.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!not-for-mail
From: Sebastian Kolski <sebastian.kolski@gmail.com>
Newsgroups: pl.comp.bazy-danych
Subject: Re: Transakcje
Date: Tue, 07 Jul 2009 09:09:55 +0200
Organization: http://news.icm.edu.pl/
Lines: 69
Message-ID: <h2usc5$9ct$1@achot.icm.edu.pl>
References: <h2ti2l$1vo$1@news.onet.pl> <4ba0026d-5f7f-4fe5-8669-103dd4c3fa7d@s31g2000yqs.googlegroups.com> <h2tkja$8tr$1@news.onet.pl> <h2tt2q.2lk.1@slaszyszCIACHTO.list.pl> <h2ul9o$lg$1@news.onet.pl>
NNTP-Posting-Host: chello089074100231.chello.pl
Mime-Version: 1.0
X-Trace: achot.icm.edu.pl 1246950597 9629 89.74.100.231 (7 Jul 2009 07:09:57 GMT)
X-Complaints-To: abuse@icm.edu.pl
NNTP-Posting-Date: Tue, 7 Jul 2009 07:09:57 +0000 (UTC)
In-Reply-To: <h2ul9o$lg$1@news.onet.pl>
User-Agent: Thunderbird 2.0.0.22 (Windows/20090605)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit