Connection pooling ponovno uporabi majhen niz podatkovnih povezav med številnimi zahtevami odjemalcev namesto odpiranja nove povezave za vsako zahtevo. Povezave PostgreSQL so drage (vsaka je ločen proces, ki porabi veliko pomnilnika), zato je pooling nujno potreben za zmogljivost in razširljivost pod obremenitvijo. PgBouncer je standardni pooler.
Problem: Povezave PostgreSQL so drage
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.
