본문 바로가기
스프링 부트

[스프링] 히카리CP란?

by illlilillil 2022. 10. 7.

우선 JDBC의 개념에 대해서 알아보자

JDBC란 자바에서 데이터베이스에 접속할 수 있도록 하는 API를 말한다.

커넥션 풀이란?

비용이 많이 드는 커넥션 연결 과정을 제거하기 위해 미리 커넥션을 생성해두고, 요청 시마다 연결한 커넥션을 통해 빠르게 DB에 연결한다.

Hikari CP

Spring Boot 2.0 이상부터 기본 제공

Hikari cp는 DB 커넥션 풀을 관리한다. JDBC의 커넥션 맺는 과정이 복잡하고 많은 자원을 소모하는 작업이기 때문이다.

Hikari cp는 미리 정해놓은 커넥션만큼 풀에 담아놓고 요청 시 만들어진 커넥션을 연결한다.

제공되는 설졍 옵션

  • maxLifeTime: 커넥션이 커넥션 풀에 머무를 수 있는 시간
    • 활성 커넥션은 관계없이 계속 연결된다. 
    • maxLifeTime의 값은 db의 wait_timeout 보다 짧게 설정한다.
    • 지속적으로 연결 확인을 하지 않아도 커넥션을 제거할 수 있다
  • minimumIdle: 최소한의 커넥션 사이즈 설정
  • connection pool size를 thread 개수보다 많이 설정

 

왜 Hikari CP가 권장되는가?

1. 성능

2. 기존 커넥션 풀은 잦은 커넥션 검증으로 RDBMS에 부하를 줌 그러나 Hikari CP는 MaxLifeTime 옵션으로 대체되었다.

3. PreparedStatement Caching을 사용하지 않는다.

 

PreparedStatement Caching

이전 커넥션 풀들은 실행 계획들을 캐싱하였는데 이때 커넥션마다 캐싱을 하게된다.

따라서 10개의 커넥션과 10개의 실행 계획이 있다면 100개의 실행 계획을 가지고 있어야 한다. 하지만 대부분의 RDBMS는 쿼리 캐싱 기능을 지원하기 때문에 굳이 커넥션 단계에서 캐싱하지 않아도 된다. 따라서 Hikari CP는 이러한 지원으로 인해 성능 향상을 이루어낸다.

댓글