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