본문 바로가기

IT/데이터베이스

DataSouce와 DBCP(DataBase Connection Pool)란

1. DataSource란

DataSource 인터페이스가 나오기 이전에 서로 다른 DBCP 구현체가 많아서 연동이 어려웠습니다. 
이러한 문제를 해소하기 위해 DBCP 표준 인터페이스를 만들었는데, 이것이 DataSource 입니다.

즉, DataSource는 Connection pool을 관리하고 연동할 수 있게 하는 표준 인터페이스 입니다.

 

2. DBCP(DataBase Connection Pool)란 

DB Connection 객체를 미리 만들어 Connection Pool에 보관하고 필요할 때마다 DB에 연결된 Connection을 
꺼내 사용하는 것을 의미합니다.

Connection Pool을 사용하는 이유는 Connection 객체를 만드는 것이 큰 비용을 소모하는 작업이기 때문입니다. 
미리 만들어진 Connection을 재사용하여 CPU의 부담과 Connection을 생성하는데 필요한 시간을 줄일 수 있습니다. 

1) DBCP 기본 option

maxActive 유휴 상태와 사용중인 커넥션을 포함해서 pool이 허용하는 최대 커넥션 개수
maxIdle pool에서 유지할 유휴 상태의 커넥션 최대 개수
minIdle pool에서 유지할 유휴 상태의 커넥션 최소 개수
initialSize 초기 connection pool의 connection 개수

DBCP 옵션의 무결성을 지키기 위해 아래와 같이 되어야 합니다.

maxActive >= initialSize
초기 connection 개수는 maxActive를 넘으면 안된다.

maxActive = maxIdle
최대 커넥션 수는 최대 유휴 상태 커넥션 수와 같아한다.

여담이지만..
WAS의 Thread는 Connection Pool의 갯수보다 여유있게 설정하는 것이 좋다고합니다.
하지만 가장 좋은 방법은 성능 테스트를 통해 최적화된 값을 구하는 것!

참조
www.holaxprogramming.com/2013/01/10/devops-how-to-manage-dbcp/