Connection Pooling: PgBouncer vs Pgcat vs RDS Proxy

Connection pooling is foundational at any scale. PgBouncer is the default; alternatives have specific advantages.

Why pooling

Postgres backs every connection with an OS process. Without a pooler, app concurrency translates 1:1 into database processes; the limit hits faster than most teams expect.

Three options

Four-criteria comparison

The three tools occupy distinct points on the simplicity-to-feature axis. Pick by workload shape, not popularity.

When to migrate

Migrating poolers is rare. Each migration takes a quarter and the existing pooler usually works fine; pick concrete forcing functions.

Antipatterns

What to do this week

Three moves. (1) Apply this pattern to your most-loaded table. (2) Measure query latency / write throughput before/after. (3) Document the win and the constraint so the next refactor inherits the knowledge.