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
'IT > Spring' 카테고리의 다른 글
[Spring] thymeleaf-layout-dialect WARN 해결 (0) | 2021.02.15 |
---|---|
[Spring] 의존성 주입(Dependency Inject,DI)이란? (0) | 2020.11.16 |
[Spring Boot] 스프링 부트란 무엇인가? (0) | 2020.10.20 |
[SpringBoot] HandlerInterceptor 설정하기 (0) | 2020.10.12 |
Spring Boot로 간단한 웹 사이트 만들기 - DB 연동 (0) | 2020.09.28 |