12
Connection Pool 비비

Connection pool

Embed Size (px)

Citation preview

Page 1: Connection pool

Connection Pool 비교

Page 2: Connection pool

Connection pool이란 ?

1

‘Connection pool' 이란 데이터 베이스와 연결된

커넥션을 미리 만들어서 풀 (pool) 속에 저장해 두고

있다가 필요할 때에 커넥션을 풀에서 가져다 쓰고 다시

풀에 반환하는 기법을 의미 .

Page 3: Connection pool

Connection pool이란 ?

1

풀 속에 미리 생성되어 있는 커넥션을 사용하고 반환하기 때문에 생성하는데 드는 연결 시간이 소비 되지 않고 ,커넥션을 재사용하기 때문에 생성되는 커넥션 수가 많지 않다 .

커넥션을 생성하고 닫는 시간이 소모되지 않기 때문에 그만큼 어플리케이션의 실행 속도가 빨라지며 , 한번에 생성될 수 있는 커넥션 수를 제어하기 때문에 동시 접속자 수가 몰려도 웹 어플리케이션이 쉽게 다운되지 않는다 .

Page 4: Connection pool

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

Page 5: Connection pool

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 의 풀을 사용해라 .] 라고 권장하고 있다 .

Page 6: Connection pool

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 과 비교했을 때 상대적으로 안 좋음

Page 7: 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 보다는 성능이 좋다 .

Page 8: Connection pool

Hibernate connection pool

2

Hibernate 에서의 추천 connection pool proxool

– 앞의 두가지 보다 성능상 뛰어남

– 안정성도 좋음

- 재사용성 증가 , 대기 시간에 따른 세션 종료 오류 개선

- 이 밖의 다른 옵션등의 증가로 앞의 2 가지 보다 성능이 대폭 개선

- 공식적인 종료는 아니지만 2008/08/23 Ver 0.9.1 을 마지막으로

개발이 중지되어 있는 상황

Page 9: Connection pool

HikariCP 장점

2

BoneCP JDBC, C3P0 등의 CP 들의 느린 속도를 개선한

빠름 빠름 빠름의 컨셉을 가지고 개발 된 CP Multi Core CPU 지원 , JDBC CP 기반

타 CP 대비 역사가 짧아서 안정성의 문제가 있음 .

Page 10: Connection pool

HikariCP 장점

2

BoneCP 보다 더 빠른 CP 빠름을 컨셉으로 한 BoneCP 보다도 더 빠름

Page 11: Connection pool

HikariCP 장점

2

활발한 개발 제공하는 말에 따르면 가장 빠르고 , 정확한 CP. zero-overhead. 가볍고 벤치 마크 결과도 우수함 . CP 의 특성상 수정하여 비교가 용이한데 실제 C3P0 에서 변경하여

운영한 결과 벤치마크의 성능과 비슷한 성능을 보인다는 검증 글이

커뮤니티에 많음

현재도 개발과 커뮤니티가 활성화 되어 있어 안정성 확보 및 버그에

관련한 피드백도 빠르게 받을 수 있음

Page 12: Connection pool

HikariCP 장점

2

기본 제공 옵션들