DB 연결에 커넥션 풀은 왜 쓸까?

DB 연결에 커넥션 풀은 왜 쓸까?

생성일
Oct 29, 2024 01:08 PM
최종 편집 일시
Last updated October 29, 2024
태그
JAVA

1. 성능 향상

  • 데이터베이스 커넥션은 설정, 네트워크 통신, 인증 등으로 인해 초기 설정 비용이 높은 작업이다. 요청시마다 커넥션을 새로 생성하면 지연 시간이 커지게 된다.
  • 커넥션 풀을 사용하면 미리 준비된 커넥션을 요청 시 즉시 제공하여 연결 설정 시간을 줄일 수 있어 성능이 향상된다.

2. 자원 효율성 및 시스템 안정성

  • 커넥션 생성 및 종료는 CPU와 메모리 등 시스템 자원을 많이 소모 한다. 커넥션 풀이 없으면, 다수의 요청이 동시에 발생할 때마다 커넥션이 생성되고 종료되어 시스템 부하가 높아질 수 있다.
  • 커넥션 풀은 최대 커넥션 수를 제한하여 과도한 연결로 인한 DB 과부하를 방지하고 시스템 자원을 효율적으로 사용할 수 있게 해준다.

3. 커넥션 재사용

  • 풀 내의 커넥션을 여러 요청에서 재사용하므로, 자원 낭비를 줄이고 애플리케이션의 전체적인 응답 속도를 높일 수 있다.
  • 재사용으로 인해 빈번한 커넥션 설정/종료 작업을 피할 수 있기 때문에 네크워크 비용과 DB 서버의 부하를 줄일 수 있다.

4. 동시성 제어

  • 다수의 요청이 동시에 발생하는 환경에서는 커넥션 풀을 통해 동시성을 제어할 수 있다.
  • 커넥션 풀은 사용 가능한 커넥션이 없는 경우 요청을 대기시키거나 제한을 둘 수 있기 때문에 DB에 대한 요청 폭주로 인한 장애를 예방할 수도 있다.

사용 방식

spring에서는 기본적으로 HikariCP를 사용한다. 이 외에 Apache DBCP 같은 것도 있다고 한다.
최대/최소 커넥션 수, 연결 유지 시간 등의 설정을 커스터마이징 할 수 있다.