mediumSystem Design

What is database connection pooling?

885 views
01

Understand the problem

Explain connection pools.

connection-pool
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Stuck? AI Nudge Available

Get a conceptual hint to guide your logic without spoiling the final implementation.

03

Study the solution

The solution is waiting

Give it an honest attempt first — then compare your thinking with the full walkthrough.

04

Read the code

A pool of N reusable connections
Run Playground
import threading, queue, time

class Pool:
    def __init__(self, size):
        self.free = queue.Queue()
        for i in range(size):
            self.free.put("conn-" + str(i))   # pre-open N connections
    def acquire(self):
        return self.free.get()                 # blocks/queues if none free
    def release(self, conn):
        self.free.put(conn)

pool = Pool(2)                                  # only 2 connections for everyone

def handle(req):
    conn = pool.acquire()
    print(req, "using", conn)
    time.sleep(0.05)                            # run query
    pool.release(conn)                          # return -> reused

threads = [threading.Thread(target=handle, args=("req" + str(i),)) for i in range(5)]
for t in threads: t.start()
for t in threads: t.join()
print("5 requests served by 2 pooled connections")
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.