BackEnd/Spring Boot

HikariCP란?

Raconer 2023. 4. 15. 17:26
728x90

HikariCP란?

빠르고 간단하며 안정적인 JDBC Connection Pool 라이브러리입니다.
"Zero-overhead" 프로덕션 준비 완료된 커넥션 풀로, 약 130KB로 매우 가볍습니다.


🔬 JMH 벤치마크

JMH(Microbenchmark)를 이용해 커넥션 풀의 오버헤드를 측정합니다.

  • 하나의 연결 주기 = DataSource.getConnection()Connection.close()
  • 하나의 Statement 주기 = prepareStatement()execute()close()

⚙️ Configuration

기본 설명

  • 대부분의 배포 환경에서 기본 설정만으로도 충분히 동작합니다.
  • 시간 관련 값은 모두 밀리초(ms) 단위입니다.
  • 정확한 타이머 의존: 성능과 안정성을 위해 시스템 시간 동기화 필수 (특히 VM 환경에서는 NTP 필요)
    자세한 설명 보기

✅ 주요 속성 설명

🔐 필수 속성

속성 설명
dataSourceClassName JDBC 드라이버에서 제공하는 DataSource 클래스 이름
jdbcUrl ex: jdbc:mysql://localhost:3306/sample
username DB 접속을 위한 사용자 이름
password DB 접속 비밀번호

🔄 자주 사용되는 속성

속성 설명
autoCommit 기본 자동 커밋 설정 (기본값: true)
connectionTimeout Pool에서 커넥션을 얻을 때까지 기다릴 최대 시간 (기본값: 30000ms, 최소값: 250ms)
idleTimeout 유휴 연결 유지 시간 (기본값: 600000ms)
maxLifetime 커넥션의 최대 수명 (기본값: 1800000ms)
connectionTestQuery 커넥션 유효성 확인용 쿼리 (JDBC4 지원 시 설정 비권장)
minimumIdle 최소 유휴 커넥션 수 (기본값: 같은 값의 maximumPoolSize)
maximumPoolSize 풀 내 최대 커넥션 수 (기본값: 10)

그 외 설정 값은 공식 문서를 참조:
🔗 https://github.com/brettwooldridge/HikariCP


📌 요약

  • 매우 빠르고 가벼운 커넥션 풀
  • 커스터마이징이 가능하지만 기본값만으로도 충분
  • 정확한 시간 설정과 연결 생명주기 관리가 핵심
  • VM에서는 NTP 기반 시계 동기화 필수

🔗 참고

728x90

'BackEnd > Spring Boot' 카테고리의 다른 글

Token JJWT  (0) 2023.04.15
json-simple 사용  (0) 2023.04.15
JDBC란?  (0) 2023.04.15
Spring Boot 서버 구축[2]  (0) 2023.04.15
Spring Boot 서버 구축[1]  (0) 2023.04.15