Web Programming

[Java] HikariCP | Database Connection Pool

효딩 2024. 8. 27. 10:59

HikariCP(Hikari Connection Pool)

JDBC DBCP(Database Connection Pool)

HikariCP는 데이터베이스 연결(Connection)을 관리해 주는 도구(라이브러리)이다.

 

HikariCP에서 커넥션 풀(Connection Pool)이 설정된 커넥션의 사이즈만큼 연결을 허용하며,

HTTP 요청에 대해 순차적으로 DB 커넥션을 처리해 주는 기능을 수행한다.

 

DBCP (Database Connection Pool)

JDBC 연결은 드라이버를 로드하고 연결하여 객체를 받아와야 하는 과정을 가진다.

이 과정은 매번 사용자가 요청할 때마다 드라이버를 로드하고 커넥션 객체를 생성하여 연결하고 종료하는 과정이 불편하고

속도와 자원 소모에 대한 단점이 있다.

-> 이 단점을 보완하기 위해 '데이터 베이스 커넥션 풀(DBCP)'을 사용한다.

 

👐 커넥션 풀링 (Connection Pooling)
: 프로그램 시작 과정에서 커넥션 객체를 2개 이상 미리 생성해둔 후, 사용자 요청이 올 경우 생성해둔 객체를 바로 활용하여 요청 처리 시간을 감소시키는 방식
이러한 커넥션 풀링을 통해 효과적으로 애플리케이션의 성능을 향상시키면서 전체 리소스 접근에 대한 사용량, 부하를 줄일 수 있음
👍 데이터베이스 커넥션 풀 (DBCP: Database Connecton Pool)
: 최초 Pool 내에서 Connection들을 하여 HTTP 요청에 따라 응답을 제공하고 반환받아서 이를 재사용하는 것을 의미함

 

DBCP의 과정

1. 애플리케이션이 실행되면서 Pool 내에 Connection들을 생성해 둔다.

2. HTTP의 요청이 올 때 Pool 내에서 Connection 객체를 가져다가 사용한다.

3. 사용이 완료된 Connection 객체는 Pool 내에 반환한다.

 

HikariCP

SpringBoot는 커넥션 풀 관리를 위해 HikariCP를 사용한다.

Thread가 커넥션을 요청했을 때 유휴 커넥션이 존재한다면 해당 커넥션을 반환해준다.

 

만약 유휴 커넥션이 존재하지 않는다면, HandOffQueue를 Polling 하면서 다른 Thread가 커넥션을 반납하기를 기다린다. 다른 Thread가 커넥션 풀에 커넥션을 반납하면 커넥션 풀은 HandOffQueue에 반납된 커넥션을 삽입하고 HandOffQueue를 Polling 하던 Thread는 커넥션을 획득하게 된다.

 

https://adjh54.tistory.com/73

 

[Java/Library] HikariCP 이해하고 적용하기 (with. MyBatis)

해당 글에서는 HikariCP에 대해 이해하고 영속성 프레임워크(Persistence Framework)인 MyBatis와 연동을 하는 적용 방법에 대해서 공유 목적으로 작성한 글입니다.      💡 [참고] 이전에 구성하였던

adjh54.tistory.com

https://code-lab1.tistory.com/209#google_vignette

 

DB 커넥션 풀(Connection pool)이란? HikariCP란?

커넥션 비용 WAS(Web Application Server)와 데이터베이스 사이의 연결에는 많은 비용이 든다. MySQL 8.0을 기준으로 INSERT 문을 수행할 때 필요한 비용의 비율은 다음과 같다. 괄호 안의 숫자가 비율을 의

code-lab1.tistory.com