개발 공부/Database & JPA

Connection Pool이란?

뺙사우르수 2025. 4. 17. 12:44
728x90

✅ 핵심 정리

DB 연결(Connection)을 미리 만들어 풀(Pool)에 보관해두고 재사용함으로써 연결/해제 비용을 줄이는 방식

 

상세 정리

1. 개념

  • DB Connection은 생성과 해제에 비용이 큰 자원
  • 요청마다 새로 연결하면 지연리소스 낭비 발생
  • Connection Pool은 미리 일정 수의 커넥션을 생성해 풀에 저장
  • 요청이 오면 풀에서 꺼내 쓰고, 작업이 끝나면 닫지 않고 다시 반납하여 재사용

2. 내부 동작

  • 초기 애플리케이션 시작 시 설정된 수만큼 커넥션 생성
  • 커넥션 요청 시 유휴 연결이 있다면 바로 반환
  • 유휴 커넥션이 없고 최대 커넥션 수 미만이면 새로 생성
  • 최대 커넥션 수 도달 시:
    → 요청은 대기하거나 예외 발생

3. 장점

  • 커넥션 생성/해제 비용 절감
  • 연결 수 제한을 통한 DB 과부하 방지
  • 안정적인 트래픽 처리 가능

4. 대표 라이브러리

  • HikariCP (Spring Boot 기본)
  • Apache Commons DBCP
  • C3P0

5. 주의사항

  • 커넥션을 닫지 않고 반환하지 않으면 커넥션 누수 발생
  • 적절한 최소/최대 커넥션 수 설정 필요

 

✅ Java 코드 예시

Spring Boot 설정 예시 (application.yml)

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: user
    password: pass
    hikari:
      maximum-pool-size: 10
      minimum-idle: 5
      idle-timeout: 30000

 

커넥션 반환 예시

try (Connection conn = dataSource.getConnection()) {
    // 쿼리 실행
} catch (SQLException e) {
    // 예외 처리
}
// try-with-resources를 통해 자동 반환 처리
728x90