데이터베이스 풀(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 수를 많이 설정하면 메모리를 많이 차지하고, 반대로 적게 설정할 경우 처리하지 못하는 대기 요청이 많아짐
'CS > Database' 카테고리의 다른 글
[데이터베이스] 파티셔닝(Partitioning) (0) | 2020.06.24 |
---|---|
[데이터베이스] SQL Injection (0) | 2020.06.24 |
[데이터베이스] 옵티마이저(Optimizer) (0) | 2020.06.24 |
[데이터베이스] 클러스터링(Clustering) (0) | 2020.06.24 |
[데이터베이스] 레플리케이션(Replication) (0) | 2020.06.24 |
댓글