HikariCP
🏊 HikariCP란?
정의
HikariCP는 고성능 JDBC Connection Pool 라이브러리이다. Spring Boot에서는 기본 커넥션 풀로 자주 사용되며, 빠른 응답 속도와 적은 오버헤드가 특징이다.
⚡ HikariCP의 특징
- 빠른 커넥션 획득 속도
- 적은 메모리 사용량
- Spring Boot와 기본 연동이 좋음
- JDBC 4+와 JDK 8+ 지원
- 설정이 비교적 단순함
포인트
HikariCP는 단순히 “풀을 제공하는 라이브러리”가 아니라, 데이터베이스 커넥션을 효율적으로 재사용하도록 돕는 핵심 구성요소다.
🛠️ Spring Boot에서 HikariCP 설정하기
1️⃣ Gradle 의존성 추가
Spring Boot를 사용하면 기본적으로 포함되는 경우가 많지만, 명시적으로 추가할 수도 있다.
dependencies {
implementation 'com.zaxxer:HikariCP:5.0.1'
}
2️⃣ application.properties에서 HikariCP 설정
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.auto-commit=true
3️⃣ application.yml에서 HikariCP 설정
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
hikari:
minimum-idle: 5
maximum-pool-size: 20
idle-timeout: 30000
max-lifetime: 1800000
connection-timeout: 30000
auto-commit: true
🔧 HikariCP 주요 설정 값
| 설정값 | 설명 |
|---|---|
minimum-idle |
유지할 최소 유휴 커넥션 수 |
maximum-pool-size |
풀의 최대 커넥션 수 |
idle-timeout |
유휴 커넥션을 제거하기 전 대기 시간 |
max-lifetime |
커넥션의 최대 생존 시간 |
connection-timeout |
커넥션 획득 대기 시간 |
auto-commit |
커넥션 자동 커밋 여부 |
[!important] 주의
maximum-pool-size를 크게 잡는다고 성능이 항상 좋아지지는 않는다. DB 서버의 처리 능력과 애플리케이션 동시성 수준을 함께 고려해야 한다.
🧱 HikariCP를 직접 Java Configuration으로 설정
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
hikariConfig.setUsername("root");
hikariConfig.setPassword("secret");
hikariConfig.setMaximumPoolSize(20);
hikariConfig.setMinimumIdle(5);
hikariConfig.setIdleTimeout(30000);
hikariConfig.setMaxLifetime(1800000);
hikariConfig.setConnectionTimeout(30000);
hikariConfig.setAutoCommit(true);
return new HikariDataSource(hikariConfig);
}
}
📊 운영 시 체크 포인트
- 커넥션 누수가 없는지 확인한다.
- 트랜잭션이 너무 길게 유지되지 않는지 확인한다.
- 풀 크기와 DB 성능의 균형을 맞춘다.
- 타임아웃 값이 너무 짧거나 길지 않은지 확인한다.
- 장애 시 커넥션 회복이 정상적으로 동작하는지 점검한다.
👍 장점
- 빠른 커넥션 처리 성능
- Spring Boot와 자연스럽게 연동
- 메모리 사용량이 비교적 적음
- 설정과 운영이 단순한 편
👎 단점
- 설정을 잘못하면 성능 문제가 오히려 심해질 수 있다.
- 대규모 환경에서는 풀 크기와 DB 구성에 대한 이해가 필요하다.
- 커넥션 누수나 장기 트랜잭션이 있으면 효과가 줄어든다.
댓글남기기