개발 공부/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