🔌 DBCP

정의

DBCP(Database Connection Pool)는 DB 연결(Connection)을 미리 만들어 두고 재사용하는 방식이다.

🧷 왜 필요한가

  • DB 연결은 생성 비용이 크다.
  • 요청마다 새 연결을 만들면 성능이 떨어진다.
  • 풀을 사용하면 연결 획득 시간을 줄일 수 있다.

🔄 DBCP Workflow

  1. 애플리케이션이 커넥션 풀에 연결을 요청한다.
  2. 풀은 사용 가능한 연결을 하나 할당한다.
  3. 애플리케이션은 할당된 연결로 DB 작업을 수행한다.
  4. 작업이 끝나면 연결을 풀에 반납한다.
  5. 풀은 반납된 연결을 다시 재사용 가능 상태로 둔다.

✅ DBCP의 장점

  • 연결 생성 비용을 줄일 수 있다.
  • DB 연결 수를 통제할 수 있다.
  • 반복 요청이 많은 환경에서 성능이 안정적이다.
  • 연결 관리 로직을 단순화할 수 있다.

🧩 주요 DBCP 구현체

  • Apache DBCP
  • HikariCP
  • C3P0
  • Tomcat JDBC Pool

⚙️ 설정 예시

Spring Boot + HikariCP

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/appdb
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      maximum-pool-size: 10
      minimum-idle: 2
      idle-timeout: 600000
      connection-timeout: 30000

⚠️ 주의사항

  • 반납하지 않으면 커넥션 누수가 발생한다.
  • 최대 커넥션 수를 무작정 크게 잡으면 오히려 불안정해질 수 있다.
  • 실제 운영에서는 HikariCP 같은 구현체를 많이 사용한다.

연결문서

댓글남기기