Upload
jong-woo-rhee
View
129
Download
0
Embed Size (px)
Citation preview
Connection Pool 비교
Connection pool이란 ?
1
‘Connection pool' 이란 데이터 베이스와 연결된
커넥션을 미리 만들어서 풀 (pool) 속에 저장해 두고
있다가 필요할 때에 커넥션을 풀에서 가져다 쓰고 다시
풀에 반환하는 기법을 의미 .
Connection pool이란 ?
1
풀 속에 미리 생성되어 있는 커넥션을 사용하고 반환하기 때문에 생성하는데 드는 연결 시간이 소비 되지 않고 ,커넥션을 재사용하기 때문에 생성되는 커넥션 수가 많지 않다 .
커넥션을 생성하고 닫는 시간이 소모되지 않기 때문에 그만큼 어플리케이션의 실행 속도가 빨라지며 , 한번에 생성될 수 있는 커넥션 수를 제어하기 때문에 동시 접속자 수가 몰려도 웹 어플리케이션이 쉽게 다운되지 않는다 .
Connection pool이란 ?
1
다양한 연결 방식이 존재 직접 구현 – 코드에서 직접 연결
JNDI 를 통한 연결
각 진영에서 제공하는 구현체를 이용하는 방법
다양한 구현체들 존재 Apache – DBCP
– DataBase Connection Pool. DataBase 와 Connection 을 맺고 있는 객체를 관리하기 위한 Pool Oracle – ODBC
– Oracle 에서 구현한 Pool Java – JDBC, BoneCP, HikariCP
– Java 진영에서 구현한 Pool 들
– JDBC(Java Data Base Connectivity. DataBase 와 연결하기 위한 Java Interface
Hibernate connection pool
2
Hibernate 에서의 connection pool
Hibernate's own connection pooling algorithm is, however, quite rudimentary. It is intended to help you get started and is not intended for use in a production system, or even for performance testing. You should use a third party pool for best performance and stability. Just replace the hibernate.connection.pool_size property with connection pool specific settings. This will turn off Hibernate's internal pool. For example, you might like to use c3p0.
요약하면 [Hibernate 에서도 connection pool 을 제공은 하지만 퍼포먼스와 안정성을 위해서는 제 3 의 풀을 사용해라 .] 라고 권장하고 있다 .
Hibernate connection pool
2
Hibernate 에서의 추천 connection pool C3P0
– Hibernate 진영에서 공식적으로 추천 할 정도로 안정성 검증됨 .√ 타 진영에서는 많이 사용 안함 .
– 2007/05/21 Ver 0.9.1.2 를 마지막으로 프로젝트 중지
– 2010/05/27 Ver 0.9.2-pre1 로 프로젝트 재개
– 성능은 타 connection pool 과 비교했을 때 상대적으로 안 좋음
Hibernate connection pool
2
Hibernate 에서의 추천 connection pool DBCP
– DataBase Connection Pool. DataBase 와 Connection 을
맺고 있는 객체를 관리하기 위한 Pool– Apache 진영에서 제공하는 구현체
– DBCP 1.4.x 버전을 쓴다면 조심해야 할 것이 메모리 누수 버그가
존재함 . 1.4.1 에서 패치가 되었지만 정식 배포가 안되어 있음 .– DBCP 2.x 버전에서는 패치가 된 구조
– C3P0 보다는 성능이 좋다 .
Hibernate connection pool
2
Hibernate 에서의 추천 connection pool proxool
– 앞의 두가지 보다 성능상 뛰어남
– 안정성도 좋음
- 재사용성 증가 , 대기 시간에 따른 세션 종료 오류 개선
- 이 밖의 다른 옵션등의 증가로 앞의 2 가지 보다 성능이 대폭 개선
- 공식적인 종료는 아니지만 2008/08/23 Ver 0.9.1 을 마지막으로
개발이 중지되어 있는 상황
HikariCP 장점
2
BoneCP JDBC, C3P0 등의 CP 들의 느린 속도를 개선한
빠름 빠름 빠름의 컨셉을 가지고 개발 된 CP Multi Core CPU 지원 , JDBC CP 기반
타 CP 대비 역사가 짧아서 안정성의 문제가 있음 .
HikariCP 장점
2
BoneCP 보다 더 빠른 CP 빠름을 컨셉으로 한 BoneCP 보다도 더 빠름
HikariCP 장점
2
활발한 개발 제공하는 말에 따르면 가장 빠르고 , 정확한 CP. zero-overhead. 가볍고 벤치 마크 결과도 우수함 . CP 의 특성상 수정하여 비교가 용이한데 실제 C3P0 에서 변경하여
운영한 결과 벤치마크의 성능과 비슷한 성능을 보인다는 검증 글이
커뮤니티에 많음
현재도 개발과 커뮤니티가 활성화 되어 있어 안정성 확보 및 버그에
관련한 피드백도 빠르게 받을 수 있음
HikariCP 장점
2
기본 제공 옵션들