TechBridge

PgBouncer Connection Pooling — 연결 폭발 방지 · Transaction mode 설정

← 목록으로

📋 실습 안내

✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기 내 코드 실행 결과
🎯 완성 미리보기 목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기 이번 강의 전용
  선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. PgBouncer Transaction mode에서 클라이언트가 서버 연결을 반환하는 시점은?
💡 Transaction mode에서는 COMMIT 또는 ROLLBACK이 실행되는 순간 서버 연결이 Pool로 반환됩니다. 이로 인해 짧은 트랜잭션이 많은 OLTP 환경에서 극적인 연결 재사용 효율을 보입니다.
Q2. PostgreSQL이 MySQL보다 Connection Pooler(PgBouncer 등)가 더 필수적인 이유는?
💡 PostgreSQL은 각 클라이언트 연결마다 fork()로 새 프로세스를 생성합니다. 프로세스당 ~5~10MB 메모리와 수 밀리초의 생성 비용이 발생하므로, 대규모 연결에는 PgBouncer가 필수입니다.
Q3. PgBouncer Transaction mode에서 사용할 수 없는 기능은?
💡 Transaction mode에서는 세션이 연결 간에 공유되므로 세션 상태(SET 변수, LISTEN, CURSOR, PREPARE)가 유지되지 않습니다. LISTEN/NOTIFY는 별도의 Session mode 연결을 사용해야 합니다.
Q4. 다음 pgbouncer.ini 설정에서 실제 PostgreSQL에 맺어지는 서버 연결의 최대 수는?
💡 max_client_conn(1000)은 PgBouncer가 수락하는 클라이언트 연결 수이고, default_pool_size(20)가 실제 PostgreSQL에 연결되는 서버 연결 수입니다. 20개 서버 연결로 1000개 클라이언트를 처리합니다.
Q5. SHOW POOLS 명령에서 cl_waiting 컬럼이 지속적으로 높은 경우 의미하는 것은?
💡 cl_waiting은 서버 연결을 기다리는 클라이언트 수입니다. 지속적으로 높으면 default_pool_size를 늘려야 합니다. 단, PostgreSQL의 max_connections 한도 내에서 조정해야 합니다.
🎉

퀴즈 통과!

점수: 0점 — 수고하셨습니다!

다음 강의로 →
😅

아쉽네요!

점수: 0점 — 70점 이상이 되어야 통과합니다.