Connection pooling hutumia tena seti ndogo ya database connections katika requests nyingi za client, badala ya kufungua connection mpya kwa kila request. Connections za PostgreSQL ni za gharama kubwa (kila moja ni process tofauti inayotumia memory kubwa), hivyo pooling ni muhimu kwa performance na scalability chini ya mzigo. PgBouncer ni pooler ya kawaida.
Tatizo: connections za PostgreSQL ni za gharama kubwa
Each PostgreSQL connection = a separate OS PROCESS, using ~5-10MB of memory.
✗ Opening a connection has overhead (process creation, auth, setup)
✗ Many connections (e.g. 1000s from a busy app) → huge memory use, contention
✗ Postgres has a max_connections limit (often ~100); exceeding it = errors
→ Opening/closing a connection per request, or holding thousands open, doesn't scale.
