hikariCP는 SpringBoot2.0부터 default JDBC connection pool로 지정된 DBCP(Database Connection Pool)입니다.

hikariCP는 다른 DBCP보다 성능이 좋다고 합니다.

자세한 내용은 github.com/brettwooldridge/HikariCP에서 확인할 수 있습니다.

 

DBCP란
2020/11/04 - [IT/데이터베이스] - DataSouce와 DBCP(DataBase Connection Pool)란

 

SpringBoot에서 아래와 같은 dependency를 추가해 주면 hikari DBCP가 default로 사용됩니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>



스프링 부트 DBCP 설정

스프링에서 DBCP 설정하는 방법은 다음과 같습니다.

/* application.yml */ 

spring:
    datasource:
        hikari:
            connectionTimeout : 30000
            maximumPoolSize : 10
            maxLifetime : 1800000
            poolName : HikariCP
            readOnly : false
            connectionTestQuery : SELECT 1

 

옵션 설명

1) connectionTimeout (default : 30000 (30 seconds))

클라이언트가 pool에 connection을 요청하는데 기다리는 최대시간을 설정합니다.
설정한 시간을 초과하면 SQLException이 발생합니다. (허용 가능한 최소 연결 시간은 250ms )

 

2) maximunPoolSize (default : 10)

유휴 및 사용중인 connection을 포함하여 풀에 보관가능한 최대 커넥션 개수를 설정합니다.
사용할 수 있는 커넥션이 없다면 connectionTimeout 시간 만큼 대기하고 시간을 초과하면 SQLException이 발생합니다. 

 

3) minimumIdle (default : maximumPoolSize와 동일) 

connection pool에서 유지가능한 최소 커넥션 개수를 설정합니다.
최적의 성능과 응답성을 원하면 이 값을 설정하지 않는게 좋다고 합니다.

 

4) idleTimeout (default : 600000 (10분))

connection pool에서 유휴 상태로 유지시킬 최대 시간을 설정합니다.
이 설정은 minimumIdle이 maximumPoolSize보다 작은 경우에만 사용할 수 있습니다. 
pool에 있는 connection이 minimumIdle에 도달할 경우 이후에 반환되는 connection에 대해서 바로 반환하지 않고 idleTimeout 만큼 유휴 상태로 있다가 폐기됩니다.

 

5) maxLifeTime (default : 1800000 (30분))

connection의 최대 유지 시간을 설정합니다.
connection의 maxLifeTime 지났을 때, 사용중인 connection은 바로 폐기되지않고 작업이 완료되면 폐기됩니다.
하지만 유휴 커넥션은 바로 폐기됩니다.

+ 2022-04-07 추가
maxLifeTime 설정은, db의 wait_timeout 보다 2~3초 짧게 주자. 좀더 여유있게 준다면 5초 정도 짧게 주면 된다.
https://pkgonan.github.io/2018/04/HikariCP-test-while-idle

 

6) readOnly (default : false)

pool에서 얻은 connection이 기본적으로 readOnly인지 지정하는 설정입니다.
데이터베이스가 readOnly 속성을 지원할 경우에만 사용할 수 있습니다.

 

7) connectionTestQuery (default : none)

데이터베이스 연결이 여전히 활성화되어있는지 확인하기 위해 pool에서 connection을 제공하기 전에 실행되는 쿼리입니다.
드라이버가 JDBC4를 지원하는 경우 이 속성을 사용하지 않는 것이 좋다고합니다.

위 설정 이외에도 많은 DBCP 설정을 제공합니다. 확인 하려면 아래 링크를 이용해주세요.
github.com/brettwooldridge/HikariCP


springboot & mariadb & mybatis 연동 방법
2020/01/02 - [IT/Spring] - [Spring Boot] MariaDB 연동 및 Mybatis 사용하기

 


참조
github.com/brettwooldridge/HikariCP

+ Recent posts