DBCP
🔌 DBCP
정의
DBCP(Database Connection Pool)는 DB 연결(Connection)을 미리 만들어 두고 재사용하는 방식이다.
🧷 왜 필요한가
- DB 연결은 생성 비용이 크다.
- 요청마다 새 연결을 만들면 성능이 떨어진다.
- 풀을 사용하면 연결 획득 시간을 줄일 수 있다.
🔄 DBCP Workflow
- 애플리케이션이 커넥션 풀에 연결을 요청한다.
- 풀은 사용 가능한 연결을 하나 할당한다.
- 애플리케이션은 할당된 연결로 DB 작업을 수행한다.
- 작업이 끝나면 연결을 풀에 반납한다.
- 풀은 반납된 연결을 다시 재사용 가능 상태로 둔다.
✅ 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 같은 구현체를 많이 사용한다.
댓글남기기