Enterprise Infrastructure Intelligence ● Certified engineers online · Fast response guaranteed
웹서버/DB

Connection Pooling: 데이터베이스 연결 재사용의 핵심 아키텍처

Connection Pooling은 데이터베이스 연결 생성/종료 오버헤드를 제거하기 위해 미리 열린 연결들을 캐시로 관리하는 미들웨어 기법입니다. JDBC 표준 인터페이스를 통해 클라이언트와 서버 계층에서 구현되며, 초기 연결, 요청 처리, 반환의 생명주기를 따릅니다.

2026.09.16  ·  22회  · 

Connection Pooling의 아키텍처

Connection Pooling은 클라이언트 측면 또는 미들웨어에서 관리되는 재사용 가능한 데이터베이스 연결 캐시입니다. 풀 초기화 시점에 고정 개수의 연결을 미리 생성하고 대기 상태에서 유지하다가, 애플리케이션이 연결을 요청하면 풀에서 유휴 연결을 할당합니다. 쿼리 실행 후 연결은 닫히지 않고 풀로 반환되어 다음 요청에 재사용됩니다.

TCP 핸드셰이크와 인증 비용 절감

새로운 데이터베이스 연결 수립에는 DNS 해석, TCP 핸드셰이크, TLS/SSL 협상, 데이터베이스 프로토콜 인증 등 네 가지 물리적 단계가 소요됩니다. 각 단계마다 상당한 CPU와 네트워크 자원이 소비되므로, 요청마다 새 연결을 생성하면 쿼리 실행 비용 자체보다 연결 설립 비용이 더 클 수 있습니다. Pooling은 이러한 초기 비용을 요청들 간에 분산시켜 전체 시스템 자원을 절약합니다.

서버측 연결 상태와 격리

unpooled 연결은 네트워크 계층의 TCP/IP 소켓, 메모리의 SQL 캐시·버퍼·객체 캐시, 사용자 인증 정보, 트랜잭션 상태, prepared statement 등을 유지합니다. 풀링 환경에서는 각 논리적 클라이언트(어플리케이션 스레드)에 고유한 연결 상태 정보가 필요하므로, 대량의 가상 연결을 소수의 실제 서버 연결로 멀티플렉싱할 때 상태 격리가 중요합니다.

설정 파라미터와 주의점

초기 연결 수(initialConnections)와 최대 연결 수(maxConnections)는 애플리케이션 워크로드와 데이터베이스 용량의 균형을 맞춰야 합니다. 연결 풀이 소진되면 요청이 대기하거나 타임아웃되므로 과도한 설정은 자원 낭비, 부족한 설정은 연결 거부를 초래합니다. 또한 close() 호출이 연결을 종료하지 않고 풀에 반환하므로 finally 블록이나 try-with-resources로 명시적 반환을 보장해야 합니다.

WIKIDATA WORKSTATION
AI·렌더링에 최적화된
전문가용 워크스테이션
NVIDIA RTX GPU · 최대 192GB 메모리 · ECC 지원