🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Transakcje

#183288
From: Adam K.
Date: Tue, 07 Jul 2009 05:09
50 lines
3222 bytes
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
Technical Details
Message-ID: <h2ul9o$lg$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.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>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail
From: "Adam K." <akobylin@nospam.op.pl>
Newsgroups: pl.comp.bazy-danych
Subject: Re: Transakcje
Date: Tue, 7 Jul 2009 07:09:11 +0200
Organization: http://onet.pl
Lines: 51
Message-ID: <h2ul9o$lg$1@news.onet.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>
NNTP-Posting-Host: iie251.internetdsl.tpnet.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1246943352 688 79.189.212.251 (7 Jul 2009 05:09:12 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Tue, 7 Jul 2009 05:09:12 +0000 (UTC)
In-Reply-To: <h2tt2q.2lk.1@slaszyszCIACHTO.list.pl>
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Windows Mail 6.0.6001.18000
X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18049
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit