본문 바로가기
Java

[SpringBoot] RestApi 만들기 (5.2) DBCP - HikariCP

by bryan.oh 2021. 7. 5.
반응형

Spring Boot DBCP
DataSource Connection Pool
Hikari Connection Pool

 

DBCP : DataBase Connection Pool

지금은 단순히 DataBase 에 Connection 하기 위해 아래와 같은 설정을 했습니다.

 application.yml 

SpringBoot 의 Connection Pool 하면 여러가지가 있는데 그 중 HikariCP 를 선택합니다.

실제 밴치마크한 데이터를 보면

https://github.com/brettwooldridge/HikariCP-benchmark

(좌측 그래프) ConnectionCycle : DataSource.getConnection() -> Connection.close()
(우측 그래프) StatementCycle : Connection.prepareStatement(), Statement.execute(), Statement.close()

spring boot 는 2.0 버전 이후에 HikariCP 를 default 로 선택했네요.

빠르고, 단순하고, 안정적입니다.

 

build.gradle 에 따로 추가할 필요는 없습니다.
'org.springframework.boot:spring-boot-starter-jdbc'
여기에 포함되어있습니다.

또는 'org.springframework.boot:spring-boot-starter-jdbc-jpa'

src/main/resources 에  application.yml  을 변경합니다.

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/world?serverTimeZone=UTC&CharacterEncoding=UTF-8
    username: root
    password: your_password
    hikari:
      maximum-pool-size: 10
      connection-timeout: 5000
      connection-init-sql: SELECT 1
      validation-timeout: 2000
      minimum-idle: 10
      idle-timeout: 600000
      max-lifetime: 1800000

server:
  port: 8000

options

  • maximum-pool-size: 최대 pool size (defailt 10)
  • connection-timeout: (말 그대로)
  • connection-init-sql: SELECT 1
  • validation-timeout: 2000
  • minimum-idle: 연결 풀에서 HikariCP가 유지 관리하는 최소 유휴 연결 수
  • idle-timeout: 연결을위한 최대 유휴 시간
  • max-lifetime: 닫힌 후 pool 에있는 connection의 최대 수명 (ms)입니다.
  • auto-commit: auto commit 여부 (default true)

 

만약에 Data Source 를 Cutomize 하려면 Configuration class 를 만듭니다.

Data Source Configuration

@Configuration
public class DataSourceConfiguration {

    @Bean(name="customDataSource")
    @ConfigurationProperties("spring.datasource")
    public DataSource customDataSource() {
        return DataSourceBuilder.create().build();
    }
}

 

서버 실행 후 테스트

 

 

Spring Boot Tutorial 시리즈

Spring Boot Tutorial 부록

728x90
반응형

댓글