Two jobs, two processes: why Multigres has its own connection pooler
Why Multigres splits client acceptance (multigateway) from backend pooling (multipooler) instead of using a single-process pooler like PgBouncer.
Why Multigres built its own pooler: split gateways and poolers, per-user pools, automatic pooling modes, and prepared-statement deduplication.
Why Multigres splits client acceptance (multigateway) from backend pooling (multipooler) instead of using a single-process pooler like PgBouncer.
Why Multigres pools connections per user, how pools share Postgres's connection budget fairly, and constant-time routing at scale.
Deduplicating prepared statements across many multigateways so Postgres parses each query once, not once per gateway.