[DB] 커넥션 풀(Connection Pool), HikariCP

wujin·2023년 5월 26일
0

커넥션 풀(Connection Pool)

커넥션 풀은 데이터베이스와 연결된 커넥션을 미리 만들어 놓고 이를 pool로 관리하는 것이다.
즉, 필요할 때마다 커넥션 풀의 커넥션을 이용하고 반환하는 기법이다.
이처럼 미리 만들어 놓은 커넥션을 이용하면 Connection에 필요한 비용을 줄일 수 있고, DB에 빠르게 접속할 수 있다.

또한 커넥션 풀을 사용하면 커넥션 수를 제한할 수 있어서 과도한 접속으로 인한 서버 자원 고갈을 방지할 수 있으며 DB 접속 모듈을 공통화해 DB 서버의 환경이 바뀔 경우 유지보수를 쉽게 할 수 있다.

특징

  • 오버헤드 감소
    매번 연결 생성 및 해제에 따른 오버헤드를 줄여 성능을 향상시킨다.

  • 연결 재사용
    풀에 저장된 연결을 재사용하여 데이터베이스 서버 부하를 감소시킨다.

  • 연결 수 제어
    최대 연결 수, 최소 연결 수 등의 설정을 통해 동시에 처리할 수 있는 요청 수를 제어한다.

장점

  • 성능 향상
    커넥션 풀은 연결 생성 및 해제에 따른 시간과 자원 소비를 줄여 성능을 향상시킨다.

  • 부하 분산
    연결 재사용을 통해 데이터베이스 서버의 부하를 분산시키고 처리량을 증가시킨다.

  • 연결 안정성
    풀에 미리 연결을 생성하여 실제 요청이 발생할 때 바로 사용할 수 있어 안정성을 높인다.

단점

  • 초기 설정 복잡성
    커넥션 풀은 초기 설정이 필요하며, 애플리케이션의 요구사항과 데이터베이스 성능을 고려하여 조정해야 합니다.

  • 메모리 사용량
    풀에 저장되는 연결은 메모리를 차지하므로, 연결 수와 메모리 사용량 사이의 균형을 유지해야 한다.


HikariCP

HikariCP는 Java 애플리케이션에서 데이터베이스 연결 관리를 위해 사용되는 고성능 JDBC(Java Database Connectivity)의 커넥션 풀 프레임워크이다.

JDBC는 Java 프로그램에서 데이터베이스와 상호 작용하기 위한 표준 API이며, HikariCP는 이를 효율적으로 관리하고 최적화하기 위한 도구로 개발되었다.

일반적으로 Java 애플리케이션은 데이터베이스에 연결하려면 매번 커넥션을 생성하고 닫아야 한다.
그러나 이러한 작업은 매우 비용이 많이 드는 작업이기 때문에, 애플리케이션의 성능에 부정적인 영향을 줄 수 있다.
이를 해결하기 위해 커넥션 풀이 도입되었는데, 커넥션 풀은 미리 생성된 일련의 데이터베이스 연결을 관리하여 애플리케이션에서 필요할 때마다 이를 대여하고 반환할 수 있게 해준다.

HikariCP는 이러한 커넥션 풀을 구현한 라이브러리 중 하나로, 뛰어난 성능과 가벼운 크기로 알려져 있다.
HikariCP는 빠른 시작 시간과 높은 처리량, 효율적인 리소스 관리 등을 지원하며, 동시 사용자 수가 많거나 데이터베이스 부하가 높은 애플리케이션에서 특히 유용하다.

HikariCP의 사용은 비교적 간단하며, JDBC 드라이버와 함께 클래스 패스에 추가하고 구성 파일을 설정하는 방식으로 사용할 수 있다. 그러면 HikariCP가 데이터베이스 연결을 관리하고 애플리케이션에서 필요한 곳에서 커넥션을 얻을 수 있게 된다.

HikariCP Dead Lock

HikariCP Dead Lock_1

HikariCP Dead Lock_2


참고 자료

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

0개의 댓글