Connection Pool(커넥션 풀)

박준형·2025년 3월 24일

데이터베이스

목록 보기
3/6

📌 데이터베이스 커넥션?

🔌 데이터베이스 커넥션 획득 과정

  1. 애플리케이션 로직이 DB 드라이버를 통해 커넥션 조회
  2. DB 드라이버가 DB와 TCP/IP 커넥션 연결(3 way handshake 발생)
  3. TCP/IP 커넥션이 연결되면 ID, PW 같은 부가정보를 DB에 전송
  4. DB는 ID, PW를 통해 인증을 완료한 후 내부에 DB 세션을 생성
  5. DB가 커넥션 생성 완료 응답 반환
  6. DB 드라이버가 커넥션 객체를 생성하여 반환

🤯 과정의 복잡함과 비효율

  • 커넥션을 새로 만드는 것은 과정도 복잡하고 많은 시간 소모
  • DB와 애플리케이션 서버에서 TCP/IP 커넥션을 새로 생성하기 위한 리소스 소모
  • SQL을 실행할 때마다 커넥션을 새로 만드는 추가 시간 소요

⚠️ 이러한 영향으로 애플리케이션의 응답 속도에 영향을 주고, 이는 사용자에게 좋지 않은 경험을 줄 수 있다.


📌 커넥션 풀

위에 문제를 해결하기 위해 등장한 방법이 커넥션을 미리 생성하고 사용하는 방식인 커넥션 풀(connection pool)이다.

  • 애플리케이션이 시작되면 커넥션 풀은 필요한 만큼 커넥션을 미리 확보하여 풀에 보관(보통 10개)
  • 커넥션 풀에 들어 있는 커넥션은 TCP/IP로 DB와 커넥션이 연결되어 있어 SQL을 DB에 전달 가능

  • 애플리케이션은 DB 드라이버를 통하지 않고 커넥션 풀에 이미 생성된 커넥션을 객체 참조로 사용
  • 커넥션 풀에 커넥션을 요청하면 커넥션 풀이 가진 커넥션 중 하나를 반환

  • 커넥션 풀에서 받은 커넥션으로 SQL을 DB로 전달하고 결과를 받아 처리
  • 작업이 끝나면 커넥션을 종료하지 않고 재사용할 수 있도록 살아있는 상태로 커넥션 풀에 반납

✅ 정리

  • 커넥션 풀은 서버당 최대 커넥션 개수를 제한할 수 있기에 DB에 무한정 연결이 생성되는 것을 막아주어 DB를 보호
  • 커넥션 풀로 얻는 이점이 매우 크기 때문에 실무에선 항상 기본으로 사용
  • 대표적인 커넥션 풀 오픈소스 commons-dbcp2 tomcat-jdbc pool HikariCP가 있고 Spring Boot 2.0 부터 기본 커넥션 풀로 HikariCP를 사용(성능, 편리함, 안정성이 이미 검증)

참고자료
스프링 DB 1편 - 데이터 접근 핵심 원리(인프런 김영한 강사님)

profile
으쌰 으쌰

0개의 댓글