Post by Markus GronotteIch hätte gerne mal gewusst wie ihr das prinzipiell macht,
wenn ihr Zugriffe aus mehreren parallel laufenden Threads heraus programmiert.
Baut ihr dann in jedem einzelnen Thread eine eigene Verbindung auf,
oder baut ihr die Verbindung im Hauptprogramm des Clients nur einmal
auf und reicht diese Verbindung dann irgendwie an alle Threads weiter?
Einfach: letzteres funktioniert nicht. Also zumindest nicht
uneingeschränkt. Siehe dazu:
http://dev.mysql.com/doc/refman/5.1/en/threaded-clients.html
Wenn du eine massiv parallele Applikation hast, dann gilt es als
sauberste Lösung, eine(n Pool von) Service-Thread(s) vorzusehen,
an den ein "normaler" Applikations-Thread seine Queries delegiert.
Da das aber recht aufwendig werden kann, programmieren die meisten
Leute lieber so, daß sie jeden Thread der was von der Datenbank will,
seine eigene Verbindung aufmachen lassen. So lange die Anzahl
derartiger Threads nicht deutlich zweistellig wird, ist IMHO auch
nichts dagegen einzuwenden.
Der MySQL-Server implementiert das intern übrigens genau so. Jede
Verbindung startet einen Worker-Thread, der dann die Queries
abarbeitet, die über diese Verbindung reinkommen.
[skip zu anderem Posting von dir]
Post by Markus GronotteDann macht es dem MySQL-Server also nichts aus wenn
in hohen Belastungsfällen mehrere tausend Verbindungen pro Minute
auf und abgebaut werden. Das wollte ich nur wissen.
Warum fragst du das dann nicht? Aber ja, MySQL kommt recht gut mit
mehreren hundert Connects pro Sekunde zurecht.
Aber nach allem, was ich bis jetzt so gehört habe, wäre evtl. der
embedded MySQL server aka libmysqld eher geeignet:
http://dev.mysql.com/doc/refman/5.1/en/libmysqld.html
Bei dieser Variante wird der MySQL-Server mit deinem Programm
zusammengelinkt und läuft als separate(r) Thread(s).
XL