Connections are expensive — share them.
Connection Pooling: connections are expensive
shape data so reads and writes stay honest
Transaction-mode pooler doesn't support session features (prepared statements, ad...
Each DB connection costs memory and a backend process; thousands of connections kill Postgres. Pool at the app and/or with a dedicated pooler so the DB sees a small, steady connection count.
Postgres backend ≈ 5–10 MB; 10k connections = 50–100 GB.
App pool size ≈ N_app × pool_per_instance, plus headroom.
Transaction-mode poolers (pgBouncer) multiplex many app connections onto few DB ones.
Lambda fleet exhausting Postgres connections.