HikariCP란?

김동호·2022년 4월 28일
0

Whatis

목록 보기
5/6
post-thumbnail

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

profile
Backend Dev

0개의 댓글