HikariCP
- HikariCP는 가벼운 용량과 빠른 속도를 가지는 JDBC의 커넥션 풀 프레임워크이다.
특징
- 빠르고 간단하며 안정적입니다.
- HikariCP는 "zero-overhead"프로덕션 준비 JDBC 연결 풀입니다.
- 약 130Kb에서 라이브러리는 매우 가볍습니다.
JMH 벤치 마크
Microbenchmarks는 JMH microbenchmark 프레임 워크를 사용하여 풀의 오버 헤드를 분리하고 측정하기 위해 만들어졌습니다. HikariCP 벤치 마크 프로젝트에서 HikariCP 성능을 확인할 수 있습니다.
- 하나의 연결 주기는 DataSource.getConnection()/ Connection.close()로 정의됩니다.
- 하나의 Statement 주기는 Connection.prepareStatement(), Statement.execute(), Statement.close()로 정의됩니다.
설명
- HikariCP는 추가 조정 없이 대부분의 배포에서 잘 수행되는 정상적인 기본값과 함께 제공됩니다. "필수 사항"을 제외하고 모든 속성은 선택 사항입니다
- HikariCP는 모든 시간 값에 밀리 초를 사용합니다.
- HIkariCP는 성능과 안정성 모두를 위해 정확한 타이머에 의존합니다. 필수적 서버는 NTP 서버로 시간 소스와 동기화됩니다.
- 특히 서버가 가상 머신 내에서 실행이 되는데 여기에서 확인할 수 있습니다. 가상 머신 시계를 "동기화" 하기 위해 하이퍼 바이저 설정에 의존하면 안 됩니다
Configuration
필수 속성
- dataSourceClassName : DataSource JDBC 드라이버에서 제공하는 클래스의 이름
- JdbcUrl : ex) "jdbc:mysql://localhost:3306/sample"
- username : 기본 드라이버에서 connection을 가져올 때 사용되는 기본 인증 사용자 이름
- password : 기본 인증 암호
자주 사용되는 속성
- autoCommit : Pool에서 반환된 연결의 기본 자동 커밋 동작을 제어 (Default = True)
- connectionTimeout : 클라이언트가 Pool에서 연결을 기다리는 최대 시간을 제어, 연결 시간 초과 시 SQLException이 발생 (최소: 250ms, Default : 30000 (30초))
- idleTimeout : 연결이 Pool에서 유휴 상태로 유지될 수 있는 최대 시간을 제어
- maxLifetime : Pool 연결 최대 수명 제어, close시에만 pool 제거
- connectionTestQuery : 드라이버가 JDBC4를 지원하는 경우 이 속성을 설정하지 않은 것이 좋다. 이것은 데이터베이스에 대한 연결이 여전히 활성 상태인지 확인하기 위해 풀에서 연결이 제공되기 직전에 실행되는 쿼리입니다
- minimumIdle : HikariCP가 Pool에서 유지하려고 시도하는 최소 유휴 연결수를 제어, 유휴 연결이 값 아래로 떨어지고 Pool의 총 연결수 미만이면 maximumPoolSize HikariCP는 추가 연결을 빠르고 효율적으로 추가하기 위해 운영됩니다.
- maximumPoolSize : 유휴 및 사용 중인 연결을 모두 포함하여 pool이 도달할 수 있는 최대 크기를 제어
- (기본 내용을 작성하였고 추가 적인 속성은 여기에서 확인하면 됩니다. )
참조
[Hikaricp Open Source] : https://github.com/brettwooldridge/HikariCP