db connection pool 어떤 걸 쓸까?

현재 프로젝트에서는 commons dbcp pool과 tomcat jdbc pool을 사용하고 있다.


몇일 전에 스터디 그룹에서 나왔던 얘기가 apache commons dbcp는 하드웨어 멀티 코어를 제대로 활용하지 못해서 성능이 떨어지고, 소스 버전 업데이트는 거의 이뤄지지 않는다고 한다.

몇 가지 더 알아보니 commons dbcp는 하나의 쓰레드를 사용하기 때문에 멀티쓰레드 안전성을 보장하고자 전체 connection pool에 대한 lock을 건다고 한다.

dbcp의 단점에 비해서 tomcat jdbc pool은 하드웨어의 멀티 코어를 충분히 활용하고 성능이 좋다고 한다.

성능이 좋다는 기준이 dbcp보다 좋은 건지 다른 컨넥션 풀링보다 좋다는 건지는 모르겠지만 어느 정도의 안전성을 보장한다는 의미로 받아들여 진다.

그리고 한 가지 눈에 띄는 오픈 소스가 보였다.

c3p0 라는 오픈 소스인데 많은 곳에서 이 컨넥션 풀링을 사용한다고 한다.

요즘 인기 있는 오픈 소스이며서 상당히 안정적으로 작동한다고 한다.

결과적으로 tomcat jdbc pool, c3p0 둘 중에 한 가지를 선택하면 될것 같은데 나는 한번도 써보지 않은 c3p0를 사용하는게 좋을 것 같다는 생각이 든다.

일단 사용을 해봐야 좋은지 나쁜지를 알 수 있으니깐. ^^