앱 쪽
250많은 연결 요구
웹 서버마다 자체 풀은 있어도, 요청이 몰리면 DB 세션 수가 그대로 커지기 쉽습니다.
App 1
App 2
App 3+
공용 중간 계층
pgBouncer가 실제 DB 연결을 짧게 빌려주고 바로 돌려받음
앱 연결 하나마다 DB 연결 하나를 붙이지 않고, 트랜잭션 단위로 재사용해 연결 폭증을 흡수합니다.
할당
사용
반환
재사용
DB 쪽
20적은 실제 연결
PostgreSQL은 더 적은 백엔드 프로세스만 유지하므로 메모리와 컨텍스트 스위칭 부담을 낮출 수 있습니다.
DB conn 20
backend 20
핵심 관계: 앱에서 보이는 세션 수와 DB가 실제로 유지하는 커넥션 수는 같을 필요가 없습니다. pgBouncer가 그 차이를 중간에서 흡수합니다.
반환 시점
효율 차이는 언제 연결을 돌려주느냐에서 생깁니다
반환 시점이 짧을수록 같은 DB 연결을 더 많은 요청이 번갈아 쓸 수 있습니다.
| 모드 | 반환 시점 | 의미 |
|---|---|---|
| session | 세션 종료 | 오래 붙잡아 재사용 효율이 낮음 |
| transaction | 커밋/롤백 직후 | 짧게 반환되어 보통 기본 선택 |
| statement | 매 SQL 후 | 가장 촘촘하지만 호환성 제약이 큼 |