Połączenie z bazą danych MySQL

Odpowiedz Nowy wątek
gosc
2011-06-14 00:13
gosc
0

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?

Pozostało 580 znaków

2011-06-14 01:35
Moderator

Rejestracja: 12 lat temu

Ostatnio: 15 minut temu

Lokalizacja: Wrocław

0
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ę.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
edytowany 1x, ostatnio: somekind, 2011-06-14 03:07

Pozostało 580 znaków

gosc
2011-06-14 02:52
gosc
0

?? o.O

Pozostało 580 znaków

gosc
2011-06-14 03:24
gosc
0

czyli, w skrócie wystarczyło powiedzieć żeby się raz połączyć, a nie kombinować ;p

dzięki za informacje ;]

Pozostało 580 znaków

j_s_r_n
2011-06-14 08:07
j_s_r_n
0

A co z connection pooling?
http://msdn.microsoft.com/en-[...]ry/8xx3tyca%28v=vs.71%29.aspx

W MySQL-u... - Marcin.Miga 2011-06-14 10:17

Pozostało 580 znaków

j_s_r_n
2011-06-14 11:11
j_s_r_n
0

http://dev.mysql.com/doc/refm[...]mming-connection-pooling.html

To nawet nie wiedziałem, że się wreszcie cywilizowanych metod dorobili. ;P - somekind 2011-06-20 20:46

Pozostało 580 znaków

gosc
2011-06-14 16:23
gosc
0

czyli jeśli nawet zamknę połączenie otworzone przez MySqlConnection to ono tak naprawdę niezostanie zamknięte?

Pozostało 580 znaków

2011-06-14 18:22

Rejestracja: 15 lat temu

Ostatnio: 6 lat temu

0
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.

edytowany 2x, ostatnio: othello, 2011-06-14 18:24

Pozostało 580 znaków

gosc
2011-06-14 20:00
gosc
0

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

Pozostało 580 znaków

2011-06-14 22:46

Rejestracja: 15 lat temu

Ostatnio: 6 lat temu

0

Można by użyć ThreadPool, prosty przykład: http://www.java2s.com/Tutoria[...]/ThreadPoolbasedTcpserver.htm

edytowany 1x, ostatnio: othello, 2011-06-14 22:48

Pozostało 580 znaków

gosc
2011-06-15 10:20
gosc
0

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

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0