Connection 이 공짜 아님
각 Postgres 백엔드 connection 이 프로세스 fork + ~10MB RAM 소비. 프로덕션 Postgres 가 보통 connection 100-200 으로 cap — 더 높이면 도움보다 해. 모던 웹 스택 (serverless function, Lambda, Vercel) 이 수천 동시 프로세스 spawn 가능, 각자 자체 connection 원함. 수학 안 맞음.
Connection pooler
Connection pooler 가 앱과 Postgres 사이에 위치. 앱 프로세스가 pooler 에 연결 (싸); pooler 가 작은 진짜 Postgres connection 풀 유지 + 트래픽 multiplex. pgBouncer 가 정전 도구. 대부분 managed 제공자가 pooler ship.
Pool 모드
- Session pooling: connection 이 전체 client 세션 동안 잡힘. 제한된 multiplexing; 가장 안전한 semantics.
- Transaction pooling: connection 이 트랜잭션 동안만 잡힘. 훨씬 좋은 multiplexing; session-level 기능 잃음 (SET, prepared statement, LISTEN). Serverless 의 default.
- Statement pooling: 각 statement 후 connection 해제. 가장 공격적; 트랜잭션 잃음. 거의 안 씀.