DBCP (DataBase Connection Pool)

  • Connection을 미리 만들어 놓고 로딩 시간을 줄인다.


동작원리

  • 웹애플리케이션 서버가 시작될 때 일정 수의 커넥션을 미리 생성
  • 웹애플리케이션 요청에 따라 생성된 커넥션 객체를 전달
  • 일정 수 이상의 커넥션이 사용되면 새로운 커넥션을 만든다.
  • 사용하지 않는 커넥션은 종료하고 최소한의 기본 커넥션을 유지


사용이유

  • 만약 한명의 접속자가 웹 사이트에 접속했다고 가정한다. 해당 웹 사이트에서 접속자는 게시판을 확인하고 자신이 쓴 게시물을 수정하고 또 새로운 게시글을 등록한다고 가정해보자. 그럼 이 한명의 접속자로 인해 DB접속은 아래와 같이 발생한다.
    • 데이터 취득
    • 검색 후 데이터 취득
    • 데이터 갱신
    • 데이터 새등록
  • 즉 한명의 접속자로 인해 단 시간에 4번의 DB접속이 일어난다. 그럼 웹상에서 아주 짧은 시간에 몇번의 DB접속이 일어날까? 만약 접속자가 1000명이라면..?
    • 커넥션풀이란 미리 커넥션 객체를 생성하고 해당 커넥션 객체를 관리하는 것을 의미한다.


DBCP 특징

  • 풀 속에 미리 커넥션이 생성되어 있기 때문에 커넥션을 생성하는 데 드는 연결 시간이 소비되지 않는다.
  • 커넥션을 계속해서 재사용하기 때문에 생성되는 커넥션 수가 많지 않다.


동시접속자 처리

  • DBCP에서 생성되어 있는 커넥션의 갯수는 한정적이다. 만약 동시 접속자가 많아지면 어떻게 될까?
    • 누군가 접속하면 DBCP에 남아 있는 커넥션을 제공하는 식이다. 하지만 남아있는 커넥션이 없을 경후 해당 클라이언트는 대기 상태로 전환이 되고 커넥션이 반환되면 대기하고 있는 순서대로 커넥션이 제공된다.

Leave a comment