Database Connection Pool 종류 및 비교

Better late than never·2022년 11월 17일
0

Database Connection Pool별 분류

c3p0

  • 2007-05-21 version 0.9.1.2 로 중지되었다가, 2010-05-27 version 0.9.2-pre1 이 올라왔다.때문에 ongoing project 로 보기는 힘들 것 같다.
  • 성능상도 다른 dbcp, BoneCP 보다 많이 뒤쳐지는 모습이다.
  • Hibernate 를 사용하는 분야에서 connection pool 로 사용할 정도로 안정성에는 문제가 없는 것으로 보인다.

BoneCP

  • 무엇보다 속도에 중점을 두고 있다.
  • 2009년에 처음 릴리즈 되었으며, 2011-04-15가 latest release 로 0.7.1 version 이다.
  • http://jolbox.com/ 의 benchmark 에서 확인할 수 있듯이 dbcp 보다 다소 빠르게 동작하지만, 진행 기간이 짧은 만큼 bug report 가 올라오고 있으며, 안정성에 검증이 dbcp 보다 약한 듯 보인다.

dbcp

가장 많이 사용되어 지고 있는 connection pool 로 많은 사람들이 사용한다는 것 만으로도

  • 안정성
  • 빠른 문제 발견

에서 이점이 있으며, 계속 활발히 진행되고 있다는 이점도 있다.

HikariCP

hikariCP는 스프링 부트 2.0부터 default JDBC connection pool이다.

hikariCP github사이트에 가보면 엄청 빠르고, 가볍고, 신뢰할 수 있다고 설명한다.

심지어 "zero-overhead"라며 엄청나게 높은 성능을 강조하고 벤치마크 결과도 보여준다.

Common DBCP VS Tomcat DBCP(Tomcat 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) 회수할 수 있도록 구현할 수 있다.
  • 추가된 기능
  • 현재의 높은 멀티코어 환경을 충족시킨다.
  • validation interval 을 설정해 줄 수 있다.
  • 높은 퍼포먼스
  • 간단해서 버그잡기가 용의. 핵심 클래스는 8개 뿐
  • 단점

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

DBCP VS c3p0

단일 쓰레드 환경이라면 DBCP가 성능이 더 우수하고, 다중 쓰레드 환경이라면 c3p0 성능이 더 우위에 있다.

0개의 댓글