Connection pooling menggunakan semula set kecil sambungan pangkalan data merentas banyak permintaan klien, berbanding membuka sambungan baharu setiap permintaan. Sambungan PostgreSQL adalah mahal (setiap satu ialah proses berasingan yang menggunakan memori yang ketara), jadi pooling penting untuk prestasi dan kebolehskalaan di bawah beban. PgBouncer ialah pooler standard.
Masalahnya: sambungan PostgreSQL adalah mahal
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.
