Seite 1 von 1

MySQL Connection Pooling

Verfasst: 07.06.2021, 09:47
von Raven280438
Hi,

ich habe einen Server (Konsolen-Programm, in .NET Core 3.1, C#) was immer mal wieder mit einer MySQL Datenbank kommuniziert. (MySql.Data.MySqlClient)
Je nach Auslastung erfolgen Querys aller paar Sekunden, oder einige male pro Sekunde.

Wie mach ich das am Besten mit den Verbindungen? Soll ich für jeden Query-Block (mehrere zusammengehörigen Querys) ne neue Verbindung aufmachen, oder kann man die Verbindungen auch irgendwie offen halten? zB mach ich das Logging komplett über die Datenbank.

Passiert das Connection-Pooling bei MySql.Data.MySqlClient automatisch, oder muss ich mich selber drum kümmern? Und wenn Ja, wie?



Gruß

Re: MySQL Connection Pooling

Verfasst: 07.06.2021, 09:55
von Chromanoid
Huhu :) die Dokumentation hier sieht ziemlich danach aus, dass Du Dich darum nicht kümmern musst. Vielleicht sollte man das Abrufen der Connection mit immer dem gleichen Connection-String abstrahieren.
https://dev.mysql.com/doc/connector-net ... oling.html

Ich würde mir ggf. auch mal anschauen, wie man die Connection (inkl. Request/Scope-gebundenes Transaktionsmanagement) injecten lassen kann. Ich habe mal schnell gegooglet, das sieht hier ganz brauchbar aus: https://medium.com/agilix/asp-net-core- ... ab72b41e91

Re: MySQL Connection Pooling

Verfasst: 07.06.2021, 09:56
von Lord Delvin
Hast du mal gemessen, wie viel Zeit da vergeht? Also ist das wirklich ein Problem, bei dem es sich lohn darüber nachzudenken?
Und kannst du in deinem API irgendwie konfigurieren, ob die Verbindung offen bleibt?

Ich kenne Leute, die für Berechnungen eine neue Datenbank anlegen und sie am Ende wieder wegwerfen :-/

Re: MySQL Connection Pooling

Verfasst: 07.06.2021, 09:57
von Schrompf
Ich hätte da irgendnen Auto-Pooling erwartet, aber im Detail kann Dir das nur die Doku verraten.

Connection Pooling im Allgemeinen: wenn Du nicht hunderte solcher Clients parallel auf der selben Datenbank hast, tut es erstmal nicht weh, jedesmal ne neue Connection aufzumachen. Ist halt ein kleiner Overhead, vielleicht ein paar Millisekunden, mit Auth ein paar mehr. Auf dem DB-Server brätst Du damit halt durch die Open Ports, aber das macht wie gesagt erst Schmerzen ab 4000 Connections in 2min (Default-Einstellungen eines Linux-Kernels)

Re: MySQL Connection Pooling

Verfasst: 07.06.2021, 10:02
von Chromanoid
Also je nach Datenbank kann das Aufbauen einer Connection echt lange dauern: https://vladmihalcea.com/the-anatomy-of ... n-pooling/ 100ms merkt man schon.