우선 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는 이러한 지원으로 인해 성능 향상을 이루어낸다.
'스프링 부트' 카테고리의 다른 글
[스프링] 동시성 문제를 처리하는 2가지 방법 (0) | 2022.10.11 |
---|---|
[스프링] 톰캣의 NIO Connector (0) | 2022.10.08 |
[스프링] TestContainer란? (0) | 2022.10.04 |
[스프링] String 클래스 자동 trim 메서드 적용하기 (0) | 2022.10.02 |
[개발방법론] DDD란 무엇인가? (0) | 2022.09.10 |
댓글