External Pooler

pgBouncer는 앱 연결 폭과 PostgreSQL backend 수를 분리한다

앱은 많은 연결을 들고 있어도, pgBouncer가 DB backend를 더 적은 수로 재사용하게 만들 수 있습니다.

App clients 수백 개 HTTP 요청과 커넥션 객체
pgBouncer pool 짧은 트랜잭션이 backend를 빌리고 즉시 반환
PostgreSQL backend 실제 서버 프로세스와 메모리 사용
모드
반환 시점
효과
주의
Session
클라이언트 연결 종료
호환성은 높지만 절감 폭은 작음
세션 상태 사용 가능
Transaction
COMMIT/ROLLBACK 직후
웹 요청 backend 수를 크게 줄임
세션 변수, prepared statement 점검
Statement
문장 실행 직후
짧은 단일 쿼리에 특화
멀티문장 트랜잭션 제약 큼
ORM이나 드라이버가 세션 상태를 쓰면 transaction pooling에서 깨질 수 있으므로 호환성 검사가 먼저입니다.