web-dev-qa-db-de.com

Was ist Datenbank-Pooling?

Ich wollte nur das Konzept des Datenbankverbindungspools kennen und wissen, wie es erreicht wird.

103
sagar27

Datenbank Verbindung Pooling ist eine Methode, die verwendet wird, um Datenbankverbindungen offen zu halten, damit sie von anderen wiederverwendet werden können.

In der Regel ist das Öffnen einer Datenbankverbindung ein teurer Vorgang, insbesondere wenn die Datenbank remote ist. Sie müssen Netzwerksitzungen eröffnen, sich authentifizieren, die Autorisierung überprüfen lassen und so weiter. Durch das Poolen bleiben die Verbindungen aktiv, sodass beim späteren Anfordern einer Verbindung eine der aktiven Verbindungen verwendet wird, anstatt eine andere erstellen zu müssen.

In der folgenden Abbildung finden Sie die nächsten Absätze:

  +---------+
  |         |
  | Clients |
+---------+ |
|         |-+  (1)   +------+   (3)    +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
|         |    |     +------+          +----------+
+---------+    |         ^
               |         | (2)
               |     /------\
               |     | Pool |
               |     \------/
           (4) |         ^
               |         | (5)
               |     +-------+   (6)   +-----------+
               #===> | Close | ======> | RealClose |
                     +-------+         +-----------+

In seiner einfachsten Form ist es nur ein ähnlicher API-Aufruf (1) wie ein API-Aufruf mit offener Verbindung, der dem "echten" ähnlich ist. Dieser überprüft zunächst den Pool auf eine geeignete Verbindung (2) und gibt diese, falls vorhanden, an den Client weiter. Andernfalls wird ein neuer erstellt (3).

Ebenso gibt es einen API-Aufruf zum Schließen (4), der die enge Verbindung real nicht aufruft, sondern die Verbindung zur späteren Verwendung in den Pool (5) stellt. Irgendwann können Verbindungen im Pool tatsächlich geschlossen sein (6).

Das ist eine ziemlich vereinfachende Erklärung. Echte Implementierungen können möglicherweise Verbindungen zu mehreren Servern und mehreren Benutzerkonten verarbeiten, sie können einige Basisverbindungen vorab zuweisen, sodass einige sofort bereit sind, und sie können tatsächlich alte Verbindungen schließen, wenn sich das Verwendungsmuster beruhigt.

165
paxdiablo

Bilder sagen mehr als tausend Worte (paxdiablo hat eine großartige Beschreibung gegeben)

alt text

Quelle

78
zengr

Wie der Name schon sagt. Wenn ein paar Leute schwimmen wollen, können sie im selben Schwimmbad schwimmen. Ist es wirklich sinnvoll, jedes Mal ein neues Schwimmbad zu errichten, wenn jemand etwas hinzufügt? Zeit und Kosten haben Priorität.

5
vdegenne

beim Datenbankverbindungs-Spooling werden einfach Verbindungen zu Datenbanken zwischengespeichert, sodass sie beim nächsten Mal wiederverwendet werden können, um die Kosten für das Herstellen einer neuen Verbindung bei jedem Herstellen einer Verbindung zu einer Datenbank zu senken

4
Peter

Verbindungspooling-Konzept nicht nur in Java, sondern in vielen Programmiersprachen. Das Erstellen eines neuen Verbindungsobjekts ist kostspielig, sodass eine feste Anzahl von Verbindungen hergestellt und im Lebenszyklus beibehalten wird. Erstellen eines virtuellen Pools Java Just ( http://javajust.com/javaques.html ) siehe Frage 14 auf dieser Seite

1
Sandhya Saini

Sie können die Apache-Commons-Bibliothek für die transparente Implementierung des Verbindungspools verwenden: http://commons.Apache.org/dbcp/

DBCP ist auch ein unterstützter Ruhezustand-Pool: http://www.informit.com/articles/article.aspx?p=353736&seqNum=4

1
madhurtanwani