MySQL - Permanente Verbindung vs Verbindungspooling

Um zu vermeiden, dass der overhead für das aufbauen einer neuen Verbindung jedes mal eine Abfrage braucht, abgefeuert gegen MySQL gibt es zwei Optionen zur Verfügung:

  1. Persistente verbindungen, wodurch eine neue Verbindung angefordert wird, wird eine Prüfung durchgeführt, um zu sehen, ob eine 'identische' Verbindung bereits geöffnet ist und wenn ja, verwenden Sie es.
  2. Verbindungs-pooling, wobei der client verwaltet einen pool von verbindungen, so dass jeder thread, muss eine Verbindung verwendet wird, Lesen Sie in einem aus dem pool aus und senden es zurück an den pool, wenn Sie fertig.

So, wenn ich eine multi-threaded-server-Anwendung erwartet von tausenden von Anfragen pro Sekunde, und jeder thread muss das Feuer eine Abfrage gegen die Datenbank, was ist dann die bessere Wahl?

Aus meinem Verständnis, Mit persistenten verbindungen, alle threads in meiner Anwendung wird versuchen und verwenden Sie die gleiche dauerhafte Verbindung mit der Datenbank, da Sie alle identische verbindungen. So ist es eine Verbindung gemeinsam von mehreren Anwendungs-threads - als Ergebnis der Anfragen wird der block auf der Datenbank-Seite bald.

Wenn ich ein connection-pooling-Mechanismus, ich werde alle Anwendungs-threads teilen sich einen pool von verbindungen. So gibt es weniger Möglichkeit, eine Sperrung verlangen. Allerdings mit Verbindungs-pooling, sollte eine Anwendung thread warten, um zu erwerben, eine Verbindung aus dem pool, oder sollten Sie eine Anfrage zu senden auf die verbindungen im pool sowieso in einer round-robin-Weise, und lassen Sie die Warteschlangen, wenn überhaupt, zufällig auf der Datenbank?

InformationsquelleAutor der Frage user1259642 | 2012-03-16

Schreibe einen Kommentar