Skip to content
C

Connection Pooling


Connection Pooling

Definition

Connection Pooling is a technique — usually implemented in middleware or an application server — that maintains a reusable pool of already-open database connections. Incoming requests borrow a connection from this pool instead of opening (and later closing) a brand-new physical connection for every single request.

How It Works — Reusing a Small Set of Connections

An application server is configured with a pool of 20 open database connections, serving 500 concurrent users. Each incoming request borrows one of the 20 already-open connections, executes its query, and returns the connection to the pool for the next request to reuse — instead of paying the cost of a fresh TCP handshake, database authentication, and session setup 500 separate times. This is dramatically cheaper than opening one physical connection per user.

Why It Matters — Solving the Two-Tier Scaling Problem

This directly solves the connection-scaling bottleneck described for two-tier architecture (2.9), where every client opened its own direct connection to the database. Pooling is only possible because a shared middle tier or middleware layer exists to hold and manage that pool on behalf of many clients — it is one of the concrete mechanisms that makes three-tier architecture (2.10) scale better than two-tier.

Edge Cases and Pitfalls

  • Pool exhaustion: if all pooled connections are busy when a new request arrives, that request must wait (or fail, depending on configuration) — the pool size must be tuned carefully against expected concurrent load.
  • Leftover session state: a connection returned to the pool with an uncommitted transaction, a lingering session variable, or a temporary object left over from the previous request can silently leak into the next request that borrows that same connection — a subtle and dangerous class of bug if connections are not properly reset before reuse.
  • Oversized pools: setting the pool size too high can overwhelm the database server itself, since each pooled connection still consumes real server-side resources (memory, session state) even while idle.

Interview Takeaways

  • Q: What bug can occur if a pooled connection isn't reset before reuse? Leftover transaction state, session variables, or temporary objects from the previous user can silently affect the next request that borrows that same connection.
  • Q: Why can't a two-tier architecture use connection pooling the same way three-tier can? Pooling requires a shared middle layer to hold and manage the pool on behalf of many clients; in two-tier, each client connects directly to the database with no such shared layer in between.

Mock Test

  • Connection Pooling - Quick Test

    8 questions on Connection Pooling.

    8 questions · 8 min · Medium
    Start Mock Test