DB Connection Pool이란?
DB와 미리 Connect 해놓은 객체를 Pool에 저장
클라이언트 요청 시 Connection을 대여
처리가 끝나면 Connection을 반납하여 Pool에 다시 저장
미리 연결해뒀다가 필요할 때 꺼내쓰는 형태의 커넥션 객체와 같다고 이해할 수 있을 거 같다.
사용하는 이유?
Java Spring의 경우,
-
DB에 직접 연결해서 처리하는 방식을 사용하는 경우
-
매번 JDBC Driver를 로드하고 커넥션 객체를 받아와야 함
-
요청 때마다 드라이버 로드, 객체 생성, 연결이 반복적으로 이루어짐
→ 매우 비효율적이라 이러한 문제를 해결하기 위해 Connection Pool을 사용한다.
+ 그 외의 프레임워크들도 사용한다고 한다.
이미지를 불러올 수 없습니다.
특징
-
WAS 실행 시 Connection 객체 Pool에 미리 생성
-
HTTP 요청에 따라 객체를 가져다 쓰고 반환
-
Connection 요청마다 연결, 생성 시간이 소비되지 않음
→ 연결 부하 감소 효과가 있음
- 동시 접속자 수가 Pool의 객체 개수보다 많은 경우?
→ 미리 생성된 커넥션 객체가 모자르면 반환까지 순번대로 대기
Pool이 클수록 메모리 소모↑ 대기시간↓