데이터베이스2012. 9. 3. 11:40

네이버나 구글에서 DBCP 를 검색 해 보면 대부분 commons DBCP 를 많이 사용한다. 나도 그랬다. 내가 보고 있는 교재에서는 commons DBCP 로 설명하고 있다. 그러나 검색을 해보니 tomcat 에서 개발한 tomcat DBCP 가 있는데 이 것은 보다 향상된 connection pool 기능을 제공한다. 그래서 이번 포스트는 이에 대해서 설명을 해보고자 한다.

 

지난번 포스트 JNDI 를 수정하는 것이기 때문에 지난번 포스트인 JNDI 를 이용한 DBCP 를 먼저 읽어보길 바란다.

 

먼저 Tomcat DBCP Connection Pool 이 commons DBCP 보다 좋은 점이 뭔지에 살펴보자.

이 내용은 아파치 홈페이지에 있는 내용 중 몇 가지만 추린 내용이다.

http://people.apache.org/~fhanik/tomcat/jdbc-pool.html

 

- 새로운 dbcp 를 써야하는 이유

: commons dbcp 는 싱글 쓰레드를 사용한다. 그래서 스레드가 안전할 수 있도록 commons dbcp 는 전체 풀(pool) 에 대해서 롹(lock)을 건다.

: commons dbcp 는 느리다. 요즘 하드에워는 cpu 수가 증가하고 있는데 반해서 이를 제대로 활용하고 있지 못해서 퍼포먼스가 떨어진다.

: commons dbcp 는 복잡하다. 클래스 수가 60개나 된다. 반면, tomcat jdbc pool 은 딸랑 8개 이다. 이는 수정이 용의함을 의미한다.

: commons dbcp 는 정적인(static) 인터페이스(interface) 를 사용하기 때문에 구현 되지 않은 모든 메소드들에 대해서 예외(exception) 을 받게 될 수 있다.

: commons dbcp 는 상당히 업데이트 되지 않는다 ..

: tomcat jdbc pool 은 commons dbcp 에서 제공하지 않는 기능을 제공하면서도 빠르다.

: 추가적인 스레드를 더할 필요 없이 connection 을 비동기적(asynchronously) 회수할 수 있도록 구현할 수 있다.

 

- 추가된 기능

: 현재의 높은 멀티코어 환경을 충족시킨다.(혹은 제대로 활용한다??)

: inteface 의 동적인(dynamic) 구현(??)

: validation interval 을 설정해 줄 수 있다.

: 높은 퍼포먼스

: 간단해서 버그잡기가 용의. 핵심 클래스는 8개 뿐

 

- 단점

: 디비가 다운되었을 때, 재 연결을 위해서는 웹서버를 내렸다가 올려야 한다.(아무래도 미리 커넥션을 맺어둬서 그런 듯^^?)

 

 

'데이터베이스' 카테고리의 다른 글

MS SQL JDBC 등록 방법  (0) 2013.01.08
초 단위 출력  (0) 2012.11.20
Tomcat DBCP 설정법  (0) 2012.09.03
MyBatis 문자열 대체 방법  (0) 2012.08.24
Oracle UTF-8로 설정하기  (0) 2012.08.02
Posted by 미랭군