Connection pooling is een techniek die een kleine set databaseverbindingen open houdt en ze over veel verzoeken hergebruikt, in plaats van elke keer opnieuw een verbinding te openen. Een verbinding openen is traag en kostbaar, dus eentje hergebruiken die al klaarstaat gaat veel sneller.

Een heldere vergelijking is een pool taxi’s die op een standplaats wachten. Elke reiziger koopt en bouwt niet een auto voor één rit; je neemt een wachtende taxi, rijdt mee en geeft hem terug voor de volgende persoon. De auto’s blijven de hele dag in dienst. Een connection pool werkt net zo: een handvol databaseverbindingen blijft open en wordt uitgeleend, en weer ingeleverd zodra een verzoek klaar is. Dit gaat van nature samen met een cachinglaag, omdat beide een drukke database beschermen tegen overbelasting bij piekverkeer.

De pool werkt ook als veiligheidsventiel. Door te begrenzen hoeveel verbindingen er tegelijk mogen bestaan, voorkomt hij dat een vloed aan verzoeken de database laat crashen, en zet hij de overige in de wacht. Die limiet afstellen is een normaal onderdeel van een app klaarmaken voor echt verkeer.

De instelling waar teams op stuklopen is de poolgrootte. Zet je hem te laag, dan staan verzoeken in de rij te wachten op een vrije verbinding en voelt de app traag terwijl de database amper iets doet. Zet je hem te hoog, dan kunnen een paar servers elk tientallen verbindingen openen, die samen het maximum van de database opslokken en alles platleggen. Het juiste getal hangt af van de database, het verkeer en hoe lang elke query duurt.

Bij TopDevs configureren we connection pooling op de systemen die we bouwen, zodat de app van een klant vlot blijft reageren, ook als veel mensen op hetzelfde moment de database raken.