🏊 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 구성에 대한 이해가 필요하다.
  • 커넥션 누수나 장기 트랜잭션이 있으면 효과가 줄어든다.

연결문서

댓글남기기