본문 바로가기
CS/Database

[데이터베이스] 데이터베이스 풀(Database Pool)

by 테리는당근을좋아해 2020. 6. 24.

데이터베이스 풀(Database Pool)

- Connection Pool

- 애플리케이션의 스레드에서 데이터베이스에 접근하기위해 Connection이 필요

- 데이터베이스와 Connection한 객체들을 미리 생성해 Pool에 저장해두었다가, 클라이언트의 요청이 들어올 때마다 사용/반환하는 방식

 

1) 데이터베이스 접근 과정

(1) 웹 컨테이너가 실행되면 데이터베이스와 연결된 Connection 객체들을 미리 생성해 Pool에 저장

(2) 클라이언트 요청 시 Pool에서 Connection 객체를 가져와 데이터베이스 접근

(3) 요청 처리가 끝나면 사용된 Connection 객체를 다시 Pool에 반환

 

2) 장점 

- 매 연결마다 Connection 객체를 생성/제거하는 비용 감소

- 미리 생성된 Connection 객체를 사용하므로 데이터베이스 접근 시간 단축

- Connection 수를 제한해 부하 조정

 

3) 단점

- Connection 또한 객체이므로 메모리 차지

- Connection 개수를 잘 못 설정할 경우, 쓸모없는 Connection이 발생할 수 있음

 

4) Connection이 부족할 경우

- 모든 Connection이 요청을 처리 중일 때, 해당 클라이언트의 요청을 대기 상태로 전환

- Pool에 Connection 객체가 반환되면 순차적으로 요청을 처리

 

5) Thread Pool과 Connection Pool

- WAS(Web Application Server)에서 Thread Pool과 Connection Pool의 Thread와 Connection의 수는 메모리와 직접적으로 관련이 있음

- Connection과 Thread 수를 많이 설정하면 메모리를 많이 차지하고, 반대로 적게 설정할 경우 처리하지 못하는 대기 요청이 많아짐

 

댓글