Database

[DB] HikariCP의 옵션

프로그래민 2021. 3. 31. 09:35
반응형

HikariCP의 옵션

HikariCP는 Springboot 환경 기준으로 application.properties에서 다음과 같은 옵션들을 적용할 수 있다.

spring.datasource.hikari.minimumIdle : pool에서 관리하는 최소 유휴 connection의 수에 관한 설정이다. 기본값으로 maximumPoolSize와 같은 값을 가진다.
spring.datasource.hikari.connectionTimeout : 클라이언트가 pool의 connection을 기다리는 최대 시간(밀리초, ms)에 관한 설정으로, 기본값은 30000ms(30초)이고, 최소값은 250ms이다. 또한 만일 최대 시간을 넘으면 SQL Exception이 발생한다.
spring.datasource.hikari.maximumPoolSize : 유휴한 connection과 사용중인 connection을 포함하여 pool의 크기를 설정하는 것이다. 기본값으로는 10을 가진다.
spring.datasource.hikari.idleTimeout : connection이 유휴 상태로 남을 수 있는 최대시간(밀리초, ms)에 관한 설정이다. 기본값을호는 600000ms(10분)이고, 최소값으로는 10000ms(10초)를 가질 수 있다.
spring.datasource.hikari.maxLifeTime : connection의 최대 유지시간에 관한 설정이다. 이 시간이 지난 connection 중에서 사용중인 connection은 connection이 종료된 이후에 pool에서 제거가 된다. 기본값으로는 1800000ms(30분)를 가지고, 0으로 설정하게 되면 무한 수명을 의미한다. 
spring.datasource.hikari.autoCommit : pool에서 반환된 connection의 기본 autoCommit에 관한 설정으로 기본값은 true 이다.

 

또한, HikariCP와 MySQL을 같이 사용할 시에 권장되는 옵션들은 다음과 같은 것들이 있다.

spring.datasource.hikari.data-source-properties.cachePrepStmts : cache 사용에 여부 대한 설정으로 true로 지정해야지 cache 관련 옵션들을 활성화 할 수 있다.
spring.datasource.hikari.data-source-properties.prepStmtCacheSize : MySQL 드라이버가 연결당 cache할 statement의 수에 관한 설정이다. 기본값은 25이지만 250~500이 권장 설정이다.
spring.datasource.hikari.data-source-properties.prepStmtCacheSqlLimit : 드라이버가 cache할 SQL 문의 최대 길이에 관한 설정이다. MySQL은 기본값으로 256을 가지고 권장 설정은 2048이다.
spring.datasource.hikari.data-source-properties.useServerPrepStmts : MySQL의 최신 버전을 지원 받는 설정으로 큰 성능 향상을 제공받을 수 있기에 true를 권장한다.

 

아래는 실제 적용 예시이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#Database
spring.datasource.url=jdbc:mysql://localhost:13306/test
spring.datasource.username=admin
spring.datasource.password=admin
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.data-source-properties.cachePrepStmts=true
spring.datasource.hikari.data-source-properties.prepStmtCacheSize=200
spring.datasource.hikari.data-source-properties.prepStmtCacheSqlLimit=2048
spring.datasource.hikari.data-source-properties.useServerPrepStmts=true
spring.datasource.hikari.minimumIdle=5
spring.datasource.hikari.connectionTimeout=10000
spring.datasource.hikari.maximumPoolSize=10
spring.datasource.hikari.idleTimeout=10000
spring.datasource.hikari.maxLifeTime=580000
spring.datasource.hikari.autoCommit=true
                                                          

 

출처
https://github.com/brettwooldridge/HikariCP/wiki/MySQL-Configuration
https://github.com/brettwooldridge/HikariCP#frequently-used
linked2ev.github.io/spring/2019/08/22/Spring-HikraiCP-MySQL-%EC%98%B5%EC%85%98-%EC%84%A4%EC%A0%95-%EA%B4%80%EB%A0%A8/
반응형

'Database' 카테고리의 다른 글

[DB] Database의 샤딩(Sharding)  (0) 2022.02.08
[NoSQL] Redis란  (2) 2021.07.03
[DB] Database Connection Pool이란  (0) 2021.01.04