Backend/Spring

[Spring boot] DBCP(DataBase Connection Pool)

나는 유찌 2020. 3. 8. 18:40

 

 

1. DBCP란?

DBCP는 DataBase Connnection Pool의 약자로 데이터베이스와 연결된 커넥션을 미리 만들어

풀(Pool) 속에 저장해 두고 필요할 때에 꺼내어 쓰는 것을 말한다.

또한 동시 접속자 수가 가질 수 있는 커넥션을 하나로 모아놓고 관리한다.

 

 

 

2. DBCP를 사용하는 이유

예를 들어, 한 사용자가 유명 게시판에서 자신이 작성한 글 내용을 수정한다고 한다.

내용을 수정하기 위해 자신이 작성한 글을 확인하고 수정을 하게 될 텐데

만일 순수 JDBC만을 이용하게 된다면 몇번의 데이터베이스와의 연결이 이루어지게 된다.

 

이 유명 게시판을 이용하는 사용자가 수천명이라고 가정했을 때 동시에 엄청난 연결이 일어나게 되는데

그렇게 된다면 터지게 될 위험이 크다.

이러한 문제를 해결하고자 나온것이 미리 커넥션을 만들어 저장해 놓은 뒤 필요시 꺼내어 사용하는 DBCP이다. 

 

 

 

3. DBCP 사용효과

DBCP 라이브러리를 잘 사용하게 될 경우 애플리케이션의 일부분에서 발생하는 문제가 전체 문제로 전파되지 않도록 할 수 있다.

또한 일시적인 문제가 긴 시간동안 이어지지 않도록 할 수 있다.

반면 설정 값을 적절하게 설정하지 못할 경우 DBCP가 오히려 애플리케이션의 병목지점(지체)이 되게 할 수 있다.

 

 

 

4. DBCP 종류

- Spring boot에서는 2.0.0 버전을 기준으로 하위 버전에서는 기본 DBCP로 Tomcat JDBC를 선택하고,

상위 버전에서는 HikariCP로 변경했다.

이외에도 Apache의 Commons DBCP와 BoneCP 등등 있다.