Mój program w trakcie działania będzie często łączył się z baza MySQL, i tu moje pytanie, powinienem otworzyć połączenie za pomocą MySqlConnection() i przypisać je do zmiennej aby z niej korzystać podczas całego działania programu czy za każdym razem zamykać to połączenie i otwierać nowe?
gosc napisał(a)
za każdym razem zamykać to połączenie i otwierać nowe?
Zrób tak, niech program pochodzi trochę, zobaczysz, co się stanie... a potem zrobisz porządnie. :)
EDIT: Jest coś takiego, jak limit połączeń TCP, który można przekroczyć ciągłym łączeniem się.
?? o.O
czyli, w skrócie wystarczyło powiedzieć żeby się raz połączyć, a nie kombinować ;p
dzięki za informacje ;]
A co z connection pooling?
http://msdn.microsoft.com/en-us/library/8xx3tyca%28v=vs.71%29.aspx
czyli jeśli nawet zamknę połączenie otworzone przez MySqlConnection to ono tak naprawdę niezostanie zamknięte?
gosc napisał(a)
czyli jeśli nawet zamknę połączenie otworzone przez MySqlConnection to ono tak naprawdę niezostanie zamknięte?
Ty bedziesz je widział jako zamknięte (w sensie nie będziesz mógł go użyć), ale fizycznie połączenie będzie ciągle istnieć. Gdy w kodzie znowu otworzysz połączenie, zostanie użyte te poprzednie bez tworzenia nowego. W mysql też tak to działa, wiem bo sam sprawdzałem - można łatwo sobie podejrzeć ilość połączeń chociażby w programie mysql administrator.
Według mnie powinieneś od razu zamykać połączenie po użyciu. Z tego powodu, gdy np używa się połączenia z mysql w C#, przeważnie daje się to w instrukcji using, w c++ musisz zamykać sam połączenie.
aha, mam jeszcze jedno pytanie a nie chce zakładać nowego tematu.
tworze serwer tcp, i każdemu nowemu połączeniowi otwieram jeden wątek aby nasłuchiwał pakietów, ale w przypadku kiedy będzie przykładowo 2000 takich połączeń to może z lekka obciążyć sprzęt, i dlatego chce zapyta czy znalazł by się jakiś wydajniejszy sposób
Można by użyć ThreadPool, prosty przykład: http://www.java2s.com/Tutorial/CSharp/0580__Network/ThreadPoolbasedTcpserver.htm
a mógł byś opisać w jaki sposób to będzie wydajniejsze? bo z tego co widzę to i tak osobny wątek :)
wiem że mogę poszukać ale akurat muszę wyjść, było by miło jak byś napisał ;p
Mam jeszcze jedno pytanie, co się stanie kiedy w tym samym czasie program będzie chciał się połączyć z baza danych?
Otworzy następne połączenie? jak się to ma do connection pooling?
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.