JSP DBCP란?
DBCP (DataBase Connection Pool)
- Connection을 미리 만들어 놓고 로딩 시간을 줄인다.
동작원리
- 웹애플리케이션 서버가 시작될 때 일정 수의 커넥션을 미리 생성
- 웹애플리케이션 요청에 따라 생성된 커넥션 객체를 전달
- 일정 수 이상의 커넥션이 사용되면 새로운 커넥션을 만든다.
- 사용하지 않는 커넥션은 종료하고 최소한의 기본 커넥션을 유지
사용이유
- 만약 한명의 접속자가 웹 사이트에 접속했다고 가정한다. 해당 웹 사이트에서 접속자는 게시판을 확인하고 자신이 쓴 게시물을 수정하고 또 새로운 게시글을 등록한다고 가정해보자. 그럼 이 한명의 접속자로 인해 DB접속은 아래와 같이 발생한다.
- 데이터 취득
- 검색 후 데이터 취득
- 데이터 갱신
- 데이터 새등록
- 즉 한명의 접속자로 인해 단 시간에 4번의 DB접속이 일어난다.
그럼 웹상에서 아주 짧은 시간에 몇번의 DB접속이 일어날까? 만약 접속자가 1000명이라면..?
- 커넥션풀이란 미리 커넥션 객체를 생성하고 해당 커넥션 객체를 관리하는 것을 의미한다.
DBCP 특징
- 풀 속에 미리 커넥션이 생성되어 있기 때문에 커넥션을 생성하는 데 드는 연결 시간이 소비되지 않는다.
- 커넥션을 계속해서 재사용하기 때문에 생성되는 커넥션 수가 많지 않다.
동시접속자 처리
- DBCP에서 생성되어 있는 커넥션의 갯수는 한정적이다. 만약 동시 접속자가 많아지면 어떻게 될까?
- 누군가 접속하면 DBCP에 남아 있는 커넥션을 제공하는 식이다. 하지만 남아있는 커넥션이 없을 경후 해당 클라이언트는 대기 상태로 전환이 되고 커넥션이 반환되면 대기하고 있는 순서대로 커넥션이 제공된다.
Leave a comment