커넥션 풀(Connection Pool)이란? DB 성능을 좌우하는 핵심 개념

커넥션 풀이란 무엇인가

애플리케이션이 데이터베이스와 데이터를 주고받으려면 먼저 커넥션(Connection)이라는 통신 채널을 맺어야 합니다. 그런데 이 커넥션을 맺는 과정은 생각보다 비용이 큽니다. TCP 소켓을 열고, 인증 절차를 거치고, DB 서버 내부에서 세션을 위한 자원을 할당하는 등 여러 단계를 거쳐야 하기 때문입니다. 만약 요청이 들어올 때마다 매번 이 과정을 처음부터 반복한다면, 실제 쿼리를 처리하는 시간보다 커넥션을 맺는 시간이 더 길어지는 경우도 생깁니다.

커넥션 풀은 이런 비효율을 줄이기 위해 등장한 개념입니다. 애플리케이션이 시작될 때 미리 일정 개수의 DB 커넥션을 만들어 풀(Pool)이라는 공간에 저장해두고, 요청이 들어올 때마다 새로 연결을 생성하는 대신 풀에 있는 커넥션을 빌려서 사용한 뒤 다시 반납하는 방식입니다. 마치 렌터카 업체가 미리 차량을 여러 대 준비해두고, 고객이 올 때마다 차를 새로 조립하는 게 아니라 이미 만들어진 차를 빌려주고 반납받는 것과 같은 구조입니다.

동작 원리와 간단한 예시

커넥션 풀의 동작은 대략 다음과 같은 흐름으로 이루어집니다.

  • 애플리케이션 구동 시 설정된 개수만큼 커넥션을 미리 생성해 풀에 저장
  • DB 작업이 필요한 요청이 오면 풀에서 사용 가능한 커넥션 하나를 대여
  • 쿼리 실

댓글 남기기