Connection pooling ponovno koristi mali skup konekcija baze podataka preko mnogih zahtjeva klijenta umjesto otvaranja nove konekcije po zahtjevu. PostgreSQL konekcije su skupe (svaka je zaseban proces koji koristi značajnu memoriju), pa je pooling neophodan za performanse i skalabilnost pod opterećenjem. PgBouncer je standard pooler.
Problem: PostgreSQL konekcije su skupe
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.
