Wat is verbindingspooling?
Verbindingspooling is de term voor het beheer van de verbindingen van gebruikers die query's op databases uitvoeren. Hoewel veel gebruikers het misschien niet opmerken, wanneer een groot aantal gebruikers toegang zoeken tot een applicatieserver waarop een database zich bevindt, kan het enorme aantal verbindingen bijna onmogelijk worden voor een server om een goede verbinding met alle verbindingen te behouden op deze tijden. Software-engineering die pooling van verbindingen mogelijk maakt, maakt het mogelijk voor een server om verbindingen goed te beheren ongeacht het grote aantal verbindingen dat vragen maakt en maakt reactie mogelijk op deze vragen met sub-seconde snelheden.
Verbindingen moeten dezelfde configuratie hebben om te kunnen worden opgenomen in een verbindingspool, dus de meeste serververbindingspoolprogramma's hebben verschillende verbindingspools die tegelijkertijd worden uitgevoerd. Wanneer een gebruiker verbinding wil maken, wordt hij of zij toegewezen aan een pool met soortgelijke configuraties, als er ruimte beschikbaar is. Als er geen ruimte beschikbaar is, wordt de aanvraag in de wachtrij geplaatst om te worden toegewezen zodra er een beschikbaar komt. Een gebruiker weet misschien niet dat hij of zij in de wachtrij staat, maar merkt misschien gewoon dat de database traag lijkt te reageren op zoekopdrachten; in de backoffice van databasebeheersystemen wordt de pools echter gescand om ruimte te vinden voor de gebruiker om een open verbinding te vinden. De meeste programma's voor het poolen van verbindingen hebben een vaste lijst met maximale gebruikers per pool en minimale tijdsinstellingen waarvoor een verbinding inactief kan blijven voordat de verbinding wordt verbroken en de beschikbaarheid wordt teruggezet naar de pool.
Bij het maken van een verbindingspool wordt een bepaald aantal verbindingsobjecten gemaakt en aan de pool toegevoegd. Om een pool als actief te beschouwen, heeft deze een minimum aantal objecten nodig. Deze verbindingsobjecten zijn de beschikbaarheidzetels die een verbinding met de pool verbinden, en ze kunnen naar behoefte worden aangemaakt en aan de pool worden toegevoegd tot het maximaal toelaatbare binnen een pool. Omdat gebruikers tevreden zijn met hun zoekopdracht en hun verbindingsobject afgeven, worden de objecten door de verbindingspoolprogramma's teruggestuurd naar de pool voor gebruik door een andere gebruiker of dezelfde gebruiker wanneer hij of zij terugkeert.
Een factor die de reactietijden bij het poolen van verbindingen kan vertragen, is wat poolfragmentatie wordt genoemd . Poolfragmentatie treedt meestal op vanwege geïntegreerde beveiliging of te veel databases die zich op een bestaande set servers bevinden. Een databasebeheersysteem waarmee gebruikers worden geverifieerd en vervolgens in de wachtrij worden geplaatst of aan bestaande verbindingspoolobjecten worden toegewezen, maakt geheugen leeg en een strakker systeemontwerp voor toegang verhelpt vaak het teveel-databaseprobleem. Het geïntegreerde beveiligingssysteemontwerp van Windows-gebaseerde programma's in veel programma's voor het poolen van verbindingen vereist dat slechts één Windows-gebruiker tegelijkertijd in een pool verblijft. Dit kan worden verholpen door het creëren van meer pools voor extra verzoeken die gelijktijdig moeten worden beantwoord.
Als het programma voor het poolen van verbindingen detecteert dat een gebruiker na een ingestelde periode niet actief is geweest of de verbinding is verbroken, retourneert het het verbindingsobject naar de pool als een ongeldig object. Als een server uitvalt terwijl een verbinding actief is, kan de verbinding nog steeds worden verbroken, ook al is de verbindingspool niet op de hoogte van de verbroken verbinding. ActiveX-verbindingspoolprogramma's gaan dan meestal door met het wissen van de pool van deze verbindingen wanneer de server opnieuw wordt opgestart.