HikariCP Propertys

https://github.com/brettwooldridge/HikariCP/blob/dev/README.md 를 참고하여 정리함

Property 설명
Name default
주요 Property
dataSourceClassName none JDBC driver에서 지원되는 dataSourceClassName을 지정합니다. 이 값은 driverClassName이 지정된 경우, 지정할 필요가 없습니다.
jdbcUrl none 이 속성은 HikariCP가 "DriverManager기반" 구성을 사용하도록 지시합니다.
DataSource 기반 구성이 여러 가지 이유로 우수하다고 생각하지만 큰 차이가 거의 없습니다.
"이전"드라이버와 함께 이 속성을 사용하는 경우 driverClassName 속성을 설정해야 할 수도 있습니다. 이 속성을 사용하는 경우에도 DataSource 속성을 사용하여 드라이버를 구성 할 수 있으며 실제로 URL 자체에 지정된 드라이버 매개 변수보다 권장됩니다.
username none 이 속성은 기본 드라이버에서 Connection을 가져올 때 사용되는 username을 설정합니다.
DataSource의 경우 기본 DataSource에서
DataSource.getConnection (username, password) 방식으로 작동합니다.
그러나 드라이버 기반 구성의 경우 드라이버에 따라 다릅니다. 드라이버 기반의 경우 HikariCP는 이 username 속성을 사용하여 드라이버의 DriverManager.getConnection (jdbcUrl, props) 호출에 전달 된 속성에서 username 속성을 설정합니다.
이것이 필요하지 않은 경우 이 메서드를 건너 뛰고 addDataSourceProperty("username", ...)를 호출 합니다.
password none 이 속성은 기본 드라이버에서 Connection을 가져올 때 사용되는 사용자 password를 설정합니다.
DataSource의 경우 기본 DataSource에서 DataSource.getConnection (username, password) 방식으로 작동합니다. 그러나 드라이버 기반 구성의 경우 드라이버에 따라 다릅니다.
드라이버 기반의 경우 HikariCP는 이 password 속성을 사용하여 드라이버의 DriverManager.getConnection (jdbcUrl, props) 호출에 전달 된 속성에서 password를 설정합니다. 이것이 필요하지 않은 경우 이 메서드를 건너 뛰고 addDataSourceProperty("pass",...)를 호출합니다.
자주 사용하는 Property
autoCommit true connection이 종료되거나 pool에 반환될 때, connection에 속해있는 transaction을 commit 할지를 결정합니다.
connectionTimeout 30000ms (30 sec) connection 연결시도시 timeout out값을 설정합니다. 이시간내로 connection을 연결하는데 실패하면 SQLException이 발생합니다.
idleTimeout 600000ms (10 min) connection Pool에 의하여 확보된 connection의 maximum idle time을 결정합니다. connection Pool에 의하여 확보된 connection이 사용되지 않고, Pool에 의해서만 이 시간동안 관리된 경우, connection을 DB에 반환하게 됩니다. 값을 0으로 설정하는 경우, 확보된 connection을 절대 반환하지 않습니다.
maxLifetime 1800000ms (30 min) connection Pool에 의하여 확보된 connection의 최대 생명주기를 지정합니다. connection을 얻어낸지 이 시간 이상되면 최근에 사용하고 있던 connection일지라도, connection을 close시킵니다. 사용중에 있던 connection은 close 시키지 않습니다.(사용이 마쳐지면 바로 close 됩니다.)
HikariCP에서는 이 값을 30~60 minutes 사이의 값을 설정하라고 강력 권고합니다. 값을 0로 설정하는 경우 lifetime은 무제한이 됩니다.
connectionTestQuery none 드라이버가 JDBC4를 지원하는 경우 이 속성을 설정하지 않는 것이 좋습니다.
 Connection.isValid() API를 지원하지 않는 "레거시" 드라이버용입니다.
이것은 데이터베이스에 대한 connection이 여전히 활성 상태인지 확인하기 위해 풀에서 connection이 제공되기 직전에 실행될 쿼리입니다.
HikariCP는 드라이버가 JDBC4와 호환되지 않는 경우 오류를 기록하여 알려줍니다.
minimumIdle maximumPoolSize connection Pool에서 유지할 최소한의 connection 갯수를 지정합니다. HikariCP에서는 최고의 performance를 위해 maximumPoolSize와 minimumIdle값을 같은 값으로 지정해서 connection Pool의 크기를 fix하는 것을 강력하게 권장합니다.
maximumPoolSize 10 이 속성은 유휴 및 사용중인 연결을 모두 포함하여 connection pool이 도달할수 있는 최대 크기를 제어합니다. 기본적으로 이 값은 데이터베이스 백엔드에 대한 실제 연결의 최대 수를 결정합니다. 이에 대한 합리적인 값은 실행 환경에 따라 결정됩니다.
connection Pool 이 크기에 도달하고 유휴 연결을 사용할 수 없으면 getConnection() 호출이 시간 초과되기 전에 최대 connectionTimeout 동안 차단됩니다.
자세한 사항은 About Pool Sizing을 참조하십시오.
metricRegistry none 이 속성은 프로그래밍 방식 구성 또는 IoC 컨테이너를 통해서만 사용할 수 있습니다. 이 속성을 사용하면 풀에서 다양한 메트릭을 기록하는 데 사용할 Codahale / Dropwizard MetricRegistry의 인스턴스를 지정할 수 있습니다.
자세한 내용은 Metric 위키 페이지를 참조하십시오.
healthCheckRegistry none 이 속성은 프로그래밍 방식 구성 또는 IoC 컨테이너를 통해서만 사용할 수 있습니다. 이 속성을 사용하면 풀에서 다양한 메트릭을 기록하는 데 사용할 Codahale / Dropwizard healthCheckRegistry의 인스턴스를 지정할 수 있습니다.
자세한 내용은 Health Checks 위키 페이지를 참조하십시오.
poolName auto-generated Logging과 JMX management에서 지정할 pool의 이름을 지정합니다.
자주 사용하지 않는 Property
initializationFailTimeout 1 이 속성은 pool이 초기 연결을 성공적으로 수행할 수 없을 경우 빠르게 실패(fail fast) 하도록 해줍니다.

양수(+)로 설정할 경우
초기 연결을 시도하는 시간(ms)으로 간주됩니다. 이 시간동안 운영 프로그램의 쓰레드가 차단되며 연결할 수 없으면 오류가 발생합니다. 이 제한시간은 connectionTimeout 시간 이후에 적용됩니다.

0으로 설정할 경우

HikariCP는 연결 확보 및 유효성 검사를 시도합니다. 연결을 얻었지만 유효성 검사에 실패하면 예외가 발생하고 Pool이 시작되지 않습니다. 그러나 연결을 얻을 수없는 경우 풀이 시작되지만 나중에 연결을 얻으려는 시도가 실패 할 수 있습니다.

음수(-)로 설정할 경우
초기 연결 시도를 무시하고 Pool은 백그라운드에서 연결을 얻으려고 시도하는 동안 즉시 시작됩니다. 따라서 이후 연결을 얻으려는 시도가 실패 할 수 있습니다.
isolateInternalQueries false 이 속성은 HikariCP가 자체 트랜잭션에서 연결 활성 테스트와 같은 내부 풀 쿼리를 격리할지 여부를 결정합니다. 이는 일반적으로 read-only 쿼리이므로 자체 트랜잭션에 캡슐화 할 필요가 거의 없습니다.
이 속성은 autoCommit이 비활성화 된 경우에만 적용됩니다.
allowPoolSuspension false 이 속성은 JMX를 통해 Pool 일시중지 및 재개를 가능하게 할지 설정합니다. 이는 특정 장애 조치 자동화 시나리오에 유용합니다. 풀이 일시 중단되면 getConnection()호출시 pool이 재개될 때까지 timeout이 발생하지 않습니다.
readOnly false database connection을 readOnly mode로 open합니다. 이 설정은 database에서 지원하지 않는다면 readOnly가 아닌상태로 open되기 때문에, 지원되는 database 목록을 확인해보고 사용해야 됩니다.
registerMbeans false 이속성은 JMX 관리빈 ( "MBeans")의 등록여부를 제어합니다.
catalog driver default 이 속성은 시스템 카탈로그를 지원하는 데이터베이스의 기본 카탈로그를 설정합니다. 이 등록정보를 지정하지 않으면 JDBC 드라이버에서 정의한 기본 카탈로그가 사용됩니다.
connectionInitSql none 이 속성은 새로운 연결이 생성될때마다 Pool에 추가되기 전에 실행될 SQL문을 설정합니다.
이 SQL이 유효하지 않거나 예외가 발생하면 연결실패로 처리되고 표준 재시도 논리를 따릅니다.
driverClassName none HikariCP는 jdbcUrl만을 기반으로 하는 DriverManager를 통해 드라이버 확인을 시도하지만 일부 이전 드라이버의 경우 driverClassName도 지정해야 합니다. 드라이버를 찾을 수 없다는 명백한 오류메시지가 나타나지 않는 한 이 속성을 생략하십시오.
transactionIsolation driver default java.sql.Connection 클래스에 정의된 Transaction Isolation을 지정합니다.정의된 Transaction Isoluation은 다음과 같습니다.
  • Connection.TRANSACTION_NONE
    transaction을 지원하지 않습니다.
  • Connection.TRANSACTION_READ_UNCOMMITTED
    transaction이 끝나지 않았을 때, 다른 transaction에서 값을 읽는 경우 commit되지 않은 값(dirty value)를 읽습니다.
  • Connection.TRANSACTION_READ_COMMITTED
    transaction이 끝나지 않았을 때, 다른 transaction에서 값을 읽는 경우 변경되지 않은 값을 읽습니다.
  • Connection.TRANSACTION_REPEATABLE_READ
    같은 transaction내에서 값을 또다시 읽을 때, 변경되기 전의 값을 읽습니다. TRANSACTION_READ_UNCOMMITTED 와 같이 사용될 수 없습니다.
  • Connection.TRANSACTION_SERIALIZABLE
    dirty read를 지원하고, non-repeatable read를 지원합니다.
none으로 설정시각 Driver vendor의JDBCDriver에서지원하는 Transaction Isoluation을따라갑니다.
validationTimeout 5000ms 이 속성은 Connection이 활성 상태인지 테스트하는 최대 시간을 제어합니다. 이 값은 connectionTimeout보다 작아야합니다. 설정 가능한 최소값은 250ms입니다.
leakDetectionThreshold 0 이 속성은 Connection leak 가능성을 나타내는 메시지가 기록되기 전에 Connection이 pool에서 벗어날 수 있는 시간을 제어합니다. 값 0은 누출 감지가 비활성화 되었음을 의미합니다. 누출 감지를 활성화하는 데 허용되는 최저 값은 2000ms(2sec)입니다.
dataSource none 이 속성은 프로그래밍 방식 구성 또는 IoC 컨테이너를 통해서만 사용할 수 있습니다. 이 속성을 사용하면 HikariCP에서 리플렉션을 통해 구성하는 대신 Pool에 의해 래핑될 DataSource의 인스턴스를 직접 설정할 수 있습니다. 이것은 일부 의존성 주입 프레임 워크에서 유용 할 수 있습니다. 이 속성을 지정하면 dataSourceClassName 속성과 모든 DataSource 관련 속성이 무시됩니다.
schema driver default 이 속성은 스키마 개념을 지원하는 데이터베이스의 기본 스키마를 설정합니다. 이 속성이 지정되지 않은 경우 JDBC 드라이버에서 정의한 기본 스키마가 사용됩니다.
threadFactory none 이 속성은 프로그래밍 방식 구성 또는 IoC 컨테이너를 통해서만 사용할 수 있습니다. 이 속성을 사용하면 Pool에서 사용하는 모든 스레드를 만드는데 사용할 java.util.concurrent.ThreadFactory의 인스턴스를 설정할 수 있습니다.
애플리케이션 컨테이너에서 제공하는ThreadFactory를 통해서만 스레드를 생성할 수 있는 일부 제한된 실행 환경에서 필요합니다.
scheduledExecutor none 이 속성은 프로그래밍 방식 구성 또는 IoC 컨테이너를 통해서만 사용할 수 있습니다. 이 속성을 사용하면 내부적으로 예약 된 다양한 작업에 사용될 java.util.concurrent.ScheduledExecutorService의 인스턴스를 설정할 수 있습니다. ScheduledThreadPoolExecutor 인스턴스와 함께 HikariCP를 제공하는 경우 setRemoveOnCancelPolicy(true)로 사용하는 것이 좋습니다.