🔍 HikariCP란?
HikariCP는 경량의 고성능 JDBC 커넥션 풀이다.
Spring Boot에서는 기본 커넥션 풀로 HikariCP를 사용하고 있으며, 빠른 속도와 낮은 메모리 사용량으로 잘 알려져 있다.
- Hikari는 일본어로 "빛"이라는 뜻이며, 그 이름처럼 빠르고 가볍다는 특징을 가진다.
- Spring Boot 2.x부터는 HikariCP가 기본으로 설정되어 있기 때문에 별도 설정 없이도 바로 사용할 수 있다.
🤔 커넥션 풀
애플리케이션이 데이터베이스에 접근할 때마다 커넥션을 새로 생성한다면 다음과 같은 문제점이 발생한다.
- 커넥션 생성/종료는 비용이 크고 느리다
- 대량의 요청 처리 시 DB 자원 고갈 가능성이 있다
- 응답 속도 저하, 장애 발생 위험이 있다
➡️ 이런 문제를 해결하기 위해 미리 일정량의 커넥션을 만들어 재사용하는 커넥션 풀(Connection Pool)을 사용한다.
그중에서도 빠르고 효율적인 구현체가 HikariCP이다.
⚙️ 기본 설정 확인
Spring Boot에서는 application.yml 혹은 application.properties에 간단히 설정할 수 있다.
Spring Boot 2.0 이상에서는 별도 지정 없이도 HikariCP가 자동으로 사용된다.
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: myuser
password: mypassword
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 10
minimum-idle: 5
idle-timeout: 600000
connection-timeout: 30000
pool-name: MyHikariCP
또는 application.properties 방식:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.pool-name=MyHikariCP
📊 주요 설정 옵션
| 옵션명 | 설명 | 기본값 |
| maximum-pool-size | 커넥션 풀의 최대 커넥션 수 | 10 |
| minimum-idle | 최소한 유지할 커넥션 수 | same as max |
| idle-timeout | 커넥션이 유휴 상태로 유지되는 최대 시간(ms) | 600000 |
| connection-timeout | 커넥션을 얻기 위한 최대 대기 시간(ms) | 30000 |
| pool-name | 커넥션 풀의 이름 | HikariPool-1 |
📌 정리
- Spring Boot는 HikariCP를 기본 커넥션 풀로 사용한다.
- 설정은 간단하지만, 성능과 안정성에 큰 영향을 미친다.
- 운영 환경에 맞게 적절히 튜닝하는 것이 중요하다.
📚 참고 자료
GitHub - brettwooldridge/HikariCP: 光 HikariCP・A solid, high-performance, JDBC connection pool at last.
光 HikariCP・A solid, high-performance, JDBC connection pool at last. - brettwooldridge/HikariCP
github.com
반응형
'IT > Spring' 카테고리의 다른 글
| JPA에서 deleteAll() vs deleteAllInBatch()의 차이와 주의할 점 (0) | 2025.07.19 |
|---|---|
| 스프링 어노테이션 (0) | 2025.07.15 |
| RestTemplate WebClient RestClient (2) | 2025.01.23 |
| React 프로젝트 Spring으로 가져오기 (0) | 2024.12.31 |
| mybatis error ( @Options ) (0) | 2024.12.24 |