Was ist Verbindungspooling?
Connection Pooling ist der Begriff für die Verwaltung der Verbindungen von Benutzern, die Datenbankabfragen durchführen. Auch wenn viele Benutzer dies möglicherweise nicht bemerken, kann es bei einer großen Anzahl von Benutzern, die Zugriff auf einen Anwendungsserver suchen, auf dem sich eine Datenbank befindet, für einen Server nahezu unmöglich werden, eine gute Verbindung mit allen Verbindungen aufrechtzuerhalten diese Zeiten. Das Software-Engineering, das das Verbindungs-Pooling ermöglicht, ermöglicht es einem Server, Verbindungen unabhängig von dem hohen Volumen an Verbindungen, die Abfragen durchführen, gut zu verwalten, und ermöglicht die Beantwortung dieser Abfragen mit einer Geschwindigkeit von weniger als einer Sekunde.
Verbindungen müssen identisch konfiguriert sein, damit sie in einen Verbindungspool aufgenommen werden können. Daher werden in den meisten Serververbindungspoolprogrammen verschiedene Verbindungspools gleichzeitig ausgeführt. Wenn ein Benutzer eine Verbindung herstellen möchte, wird er einem Pool mit ähnlichen Konfigurationen zugewiesen, sofern Speicherplatz verfügbar ist. Wenn kein Speicherplatz verfügbar ist, wird die Anforderung in die Warteschlange gestellt, um zugewiesen zu werden, sobald einer verfügbar ist. Ein Benutzer ist sich möglicherweise nicht bewusst, dass er sich in einer Warteschlange befindet, stellt jedoch möglicherweise einfach fest, dass die Datenbank in der Antwort auf die Abfrage langsam zu sein scheint. Im Backoffice von Datenbankverwaltungssystemen werden jedoch die Pools durchsucht, um Platz für den Benutzer zu finden, um eine offene Verbindung zu finden. Die meisten Verbindungspooling-Programme verfügen über eine festgelegte Liste mit maximalen Benutzern pro Pool und minimalen Zeiteinstellungen, für die eine Verbindung inaktiv bleiben kann, bevor die Verbindung getrennt und die Verfügbarkeit an den Pool zurückgegeben wird.
Beim Erstellen eines Verbindungspools wird eine bestimmte Anzahl von Verbindungsobjekten erstellt und dem Pool hinzugefügt. Damit ein Pool als aktiv betrachtet werden kann, ist eine Mindestanzahl von Objekten erforderlich. Bei diesen Verbindungsobjekten handelt es sich um die Verfügbarkeitssitze, die eine Verbindung zum Pool herstellen. Sie können erstellt und dem Pool nach Bedarf hinzugefügt werden, bis die maximal zulässige Anzahl innerhalb eines Pools erreicht ist. Wenn Benutzer mit der Abfrage zufrieden sind und ihr Verbindungsobjekt löschen, werden die Objekte von den Verbindungspoolprogrammen an den Pool zurückgegeben, damit sie von einem anderen Benutzer oder demselben Benutzer verwendet werden können, wenn er oder sie zurückkehrt.
Ein Faktor, der die Antwortzeiten beim Verbindungspooling verlangsamen kann, ist die sogenannte Poolfragmentierung. Eine Poolfragmentierung tritt normalerweise aufgrund der integrierten Sicherheit oder zu vieler Datenbanken auf, die sich auf einer vorhandenen Servergruppe befinden. Ein Datenbankverwaltungssystem, das Benutzer authentifiziert und diese dann in die Warteschlange stellt oder vorhandenen Verbindungspoolobjekten zuweist, beansprucht den Arbeitsspeicher, und ein strafferes Systemdesign für Zugriffe behebt häufig das Problem, dass zu viele Datenbanken vorhanden sind. Das integrierte Sicherheitssystemdesign von Windows-basierten Programmen in vielen Verbindungspooling-Programmen erfordert, dass sich jeweils nur ein Windows-basierter Benutzer in einem Pool befindet. Dies kann durch die Erstellung weiterer Pools behoben werden, um zusätzliche Anforderungen zu berücksichtigen, die gleichzeitig beantwortet werden müssen.
Wenn das Verbindungspoolprogramm feststellt, dass ein Benutzer über einen festgelegten Zeitraum hinaus inaktiv war oder die Verbindung getrennt wurde, wird das Verbindungsobjekt als ungültiges Objekt an den Pool zurückgegeben. Wenn ein Server ausfällt, während eine Verbindung besteht, kann die Verbindung dennoch getrennt werden, obwohl der Verbindungspool die getrennte Verbindung nicht kennt. ActiveX-Verbindungspoolprogramme löschen dann normalerweise den Pool dieser Verbindungen, wenn der Server neu gestartet wird.