Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL - Persistente Verbindung vs. Verbindungspooling

Dauerhafte Verbindungen zu haben bedeutet nicht, dass alle Threads dieselbe Verbindung verwenden. Es "sagt" nur, dass Sie die Verbindung offen halten (im Gegensatz dazu, eine Verbindung jedes Mal zu öffnen, wenn Sie eine brauchen). Das Öffnen einer Verbindung ist ein kostspieliger Vorgang, daher versuchen Sie im Allgemeinen zu vermeiden, Verbindungen öfter als nötig zu öffnen.

Aus diesem Grund verwenden Multithread-Anwendungen häufig Verbindungspools. Der Pool kümmert sich um das Öffnen und Schließen von Verbindungen, und jeder Thread, der eine Verbindung benötigt, fordert eine aus dem Pool an. Es ist darauf zu achten, dass der Thread die Verbindung schnellstmöglich an den Pool zurückgibt, damit ein anderer Thread sie nutzen kann.

Wenn Ihre Anwendung nur wenige lange laufende Threads hat, die Verbindungen benötigen, können Sie auch eine Verbindung für jeden Thread öffnen und diese offen halten.

Die Verwendung von nur einer Verbindung (wie Sie es beschrieben haben) entspricht einem Verbindungspool mit der maximalen Größe eins. Dies wird früher oder später Ihr Engpass sein, da alle Threads auf die Verbindung warten müssen. Dies könnte eine Option sein, um die Datenbankoperationen zu serialisieren (sie in einer bestimmten Reihenfolge auszuführen), obwohl es bessere Optionen gibt, um die Serialisierung sicherzustellen.