0. 들어가며
Spring Boot 환경에서 기본 커넥션 풀로 널리 사용되는 HikariCP 설정 중 몇 개에 대해 공부한 내용을 정리한다.
1. HikariCP
JDBC로 직접 DB Connection을 열고 닫는 작업은 비용이 큰 I/O 연산이다. 매번 커넥션을 새로 생성하면 애플리케이션 응답 시간이 늘어나고, DB 서버에 불필요한 부하가 걸릴 수 있다. 이를 해결하기 위해 등장한 개념이 바로 커넥션 풀(Connection Pool)이다. 커넥션 풀은 사용했던 커넥션을 재사용함으로써, 커넥션 생성과 해제에 소요되는 오버헤드를 줄여준다.
1.1 HikariCP란?
HikariCP는 경량화와 고성능을 목표로 탄생한 커넥션 풀 라이브러리이다.
- 경량화 : 최소한의 코드로만 구현되어있어 애플리케이션 빌드 사이즈를 크게 늘리지 않는다.
- 빠른 성능 : 커넥션 획득과 반환 속도가 경쟁 라이브러리 대비 빠르다고 한다.
- 안정성 : 내부적으로 MBean과 JMX를 통한 모니터링을 지원하며, 다양한 예외 상황에서도 풀을 깨지 않고 복구한다.

1.2 커넥션 풀의 두 가지 라이프 사이클
1) 빌려간 상태 : Checkout (In-Use)
- 애플리케이션이 dataSource.getConnection() 을 호출해서 실제로 커넥션을 사용하려고 가져간 상태이다.
- 이 상태의 커넥션은 오직 호출한 스레드만 사용할 수 있고, 작업이 끝나면 반드시 connection.close() 를 호출하여 풀에 반납해야 한다.