🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #21068

Re: windows forms i bazy danych

#21068
From: wloochacz
Date: Tue, 06 Oct 2009 09:40
94 lines
5368 bytes
3P pisze:
> Dnia 05-10-2009 o 12:39:10 wloochacz <nospam.wloochacz@nospam.dgbit.pl> 
> napisał(a):
> 
>> 3P pisze:
>> /ciach/
>>
>>> Chyba czegoś nie rozumiesz.
>> Nie sądzę...
>>
>>> Właśnie po to jest connection pooling, abyś zamykał i otwierał 
>>> połączenia bardzo często.
>> Niezupełnie.
>> Connection pooling jest po to, abyś nie musiał robić osobnego 
>> "connection dla każdego zapytania", ot co...
>> A "przy okazji" załatwia w inteligentny (mniej lub bardziej) cykl 
>> życia danego connection, które jest zarządzane pulą.
>> Generalnie mechanizm jest prosty; potrzebujesz connection prosisz pulę 
>> o nie. Ono Ci daje to które jest aktualnie wolne, lub tworzy je dla 
>> Ciebie, kiedy wolnego nie ma.
>> Kiedy connection nie jest Ci potrzebne - wraca do puli i czeka na 
>> następne żądania.
>> Dzięki temu nie musisz się martwić o to, czy dane connection nie jest 
>> zaalokowane przez inne zapytanie.
>>
> Nie rozumiem o czym piszesz w ostatnim zdaniu. A kiedy niby musze się 
> martwić?
Otwórz sobie recordset z kursorem po stornie serwera (nawet w .NET da 
się to zrobić...), nie zamykaj goi do tego samego połączenia (ta sama 
instancja, czyli bez puli) podepnij nową instancję w/w zapytania.
Jak trafisz na komunikat "connection is busy with another resultset", to 
wróć i pogadamy.

Pisałeś kiedykolwiek w czymś innym niż .NET?
Tam gdzie nie było poolingu?

> Jednak nie rozumiesz chyba idei connection poolingu.
Oczywiście.

> Ponieważ zalecaną metodą pracy jest tworzenie połączenia na czas 
> zapytania i zamykanie po jego wykonaniu
Bzdura.
Kto to zaleca w WindowsForms?
Gdzie to jest napisane?
Pokaż proszę.
Nie piszę w .NET i nie piszę app webowych.

> to stosuje się connection pooling, aby nie tracić czasu na tworzenie 
> nowych połączeń. Dzięki temu
> masz cały czas dostępne obiekty połączeń do bazy (tzn. klienci mogą się 
> łączyć do bazy). 
Tak, ale te połączenia i tak zostały stworzone i są utrzymywane przez 
pulę - wszystko dzieje się automatycznie, to całą różnica.

> Dzięki temu
> więcej klientów może pracować równolegle. 
Dzięki czemu? Jak pooling przekłąda się na "więcej klientów"?
Chyba nie rozumiesz idei connection poolingu.

> Connection pooling daje ci 
> tylko to, że szybciej uzyskujesz połączenia.
Niezupełnie szybciej - po prost pula trzyma połączenia, więc dostajesz 
istniejące aktywne połączenie. Jeżeli pula nie ma wolnych aktywnych 
połączeń to musi je utworzyć; tyle że w przypadku MS SQLa utworzenie 
połączenia typu pooled nie wymaga wykonania wszystkich akcji, które są 
wymagane do utworzenia normalnego połączenia - a więc tak, tworzenia 
połączenia typu pooled jest szybsze.

> Gdybyś miał cały czas otwarte połączenia to ConnectionPooling do niczego 
> nie byłby ci potrzebny.
Co Ty nie powiesz?
Jest potrzebny - spróbuj utrzymać połączenie i wykonać jakąś operację, 
ale równolegle w wielu wątkach używając tego samego połączenia (nie puli).
A potem wróć i pochwal się wynikami...

>>> Dzięki temu możesz mieć jednocześnie więcej użytkowników pracujących 
>>> z bazą.
> 
>> Niezupełnie tak - mogę sprawić, aby kod wykonywał się równolegle, a 
>> nie sekwencyjnie. Prawie wszystkie bazy danych, mają kretyńskie 
>> ograniczenie, które nie pozwala mieć aktywnych wielu zestawów danych, 
>> które korzystają z tego samego połączenia. Chlubnym wyjątkiem jest 
>> Firebird (tu można mieć nawet wiele transakcji w tym samym connection 
>> i   nie mam na myśli save pointów) i ciekawą inicjatywą jest MARS 
>> dostępny od MS SQL Server 2005.
>>
> Czy nie widzisz, że piszesz o czymś zupełnie innym? Piszę o wielu 
> użytkownikach jednocześnie, a ty mi tu o MARSie piszesz.
Powiem tak, żebyś zrozumiał; a co gdyby użytkownik był de-facto 
polecenim SQL, a więc chodzi o to, że użytkownicy wykonują polecenia SQL 
za pomocą jednego globalnego connection?

-- 
wloochacz
Technical Details
Message-ID: <haf3b7$bqo$1@atlantis.news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail
References: <3489e71f-a9c5-4e6a-9c8e-4277001d27bc@m11g2000yqf.googlegroups.com> <ha3ac0$hgl$2@nemesis.news.neostrada.pl> <ha4i1f$4d9$1@nemesis.news.neostrada.pl> <ha4p6t$3nu$1@news.wp.pl> <ha4rg5$emt$2@atlantis.news.neostrada.pl> <ha4s9n$5b4$1@news.wp.pl> <ha51bp$qgu$2@nemesis.news.neostrada.pl> <op.u06mdg0fmsp0fz@mcs> <hacism$53m$1@nemesis.news.neostrada.pl> <op.u1b911l6msp0fz@mcs>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail
From: wloochacz <nospam.wloochacz@nospam.dgbit.pl>
Newsgroups: alt.pl.comp.lang.csharp
Subject: Re: windows forms i bazy danych
Date: Tue, 06 Oct 2009 11:40:22 +0200
Organization: TP - http://www.tp.pl/
Lines: 94
Message-ID: <haf3b7$bqo$1@atlantis.news.neostrada.pl>
References: <3489e71f-a9c5-4e6a-9c8e-4277001d27bc@m11g2000yqf.googlegroups.com> <ha3ac0$hgl$2@nemesis.news.neostrada.pl> <ha4i1f$4d9$1@nemesis.news.neostrada.pl> <ha4p6t$3nu$1@news.wp.pl> <ha4rg5$emt$2@atlantis.news.neostrada.pl> <ha4s9n$5b4$1@news.wp.pl> <ha51bp$qgu$2@nemesis.news.neostrada.pl> <op.u06mdg0fmsp0fz@mcs> <hacism$53m$1@nemesis.news.neostrada.pl> <op.u1b911l6msp0fz@mcs>
NNTP-Posting-Host: plast-box.pl
Mime-Version: 1.0
X-Trace: atlantis.news.neostrada.pl 1254822055 12120 195.205.119.237 (6 Oct 2009 09:40:55 GMT)
X-Complaints-To: usenet@news.neostrada.pl
NNTP-Posting-Date: Tue, 6 Oct 2009 09:40:55 +0000 (UTC)
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
In-Reply-To: <op.u1b911l6msp0fz@mcs>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit