Connection pooling znovu používá malou sadu databázových připojení napříč mnoha klientskými požadavky, místo otevření nového připojení pro každý požadavek. PostgreSQL připojení jsou drahá (každé je samostatný proces využívající významnou paměť), takže pooling je nezbytný pro výkon a škálovatelnost pod zátěží. PgBouncer je standardní pooler.
Problém: PostgreSQL připojení jsou drahá
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.
