Anything

[DB] 커넥션 풀 (Connection Pool)

씬프 2021. 4. 15. 11:41
반응형

DB 커넥션 풀이란 서버와 DB서버 간의 통신 사이에 Pool이라는 공간에 Connection 객체를 두어 관리하는 것.

 

DB 커넥션 풀이 없을 때

JDBC에서 서버와 DB 서버가 통신할 때 순서는 다음과 같다.

 

1. DriverManager를 통해 Connection 객체를 생성

2. Connection 객체로부터 쿼리를 수행하기 위한 PreparedStatement 객체 생성

3. executeQuery를 수행해 ResultSet 객체를 받아서 데이터를 처리

4. 처리가 완료되면 사용된 리소스 close 하여 반환

 

DB 서버에 대한 물리적 접근이 많아진다. (사용되는 객체들의 생성과 반환의 반복)

비용과 시간의 문제, 네트워크 부담의 문제가 생긴다.

 

DB 커넥션 풀을 사용하면

이러한 문제를 DB Connection Pool로 해결한다.

커넥션 풀을 사용하면 다수의 HTTP 요청에 대한 Thread를 효율적으로 처리할 수 있다.

 

동작하는 방식은 아래와 같다.

 

1. 서버가 실행되면 일정량 DB Connection 객체를 생성하고, Pool이라는 곳에 저장한다.

2. HTTP 요청에 따라 Pool에서 Connection 객체를 가져다 쓰고 반환한다.

 

반복되는 객체 생성과 반환을 피할 수 있다. 비용과 시간의 문제도 해결된다.

 

DB 커넥션 풀은 어떻게 관리할 것인가

Connection Pool에 대해서 관리, 설정이 필요하다.

 

maxActive(동시에 사용할 수 있는 최대 Connection 개수),

maxIdle(커넥션 풀에 반납할 때 최대로 유지될 수 있는 커넥션 수),

minIdle(최소한으로 유지할 커넥션 수),

initialSize(최초로 커넥션 풀에 채울 커넥션 수)

 

설정을 통해 효율적인 커넥션 풀을 관리할 수 있어야 한다.

 

 

참조글

"DB Connection Pool에 대한 이야기", 2021년 4월 15일, www.holaxprogramming.com/2013/01/10/devops-how-to-manage-dbcp/

'Anything' 카테고리의 다른 글

[Network] 네트워크  (0) 2021.05.13
[Javascript] Ajax  (0) 2021.04.20
[Basic] RESTful API  (0) 2021.04.12
SQL 기초 (Oracle DB)  (0) 2021.03.29
MVC 패턴  (0) 2021.03.26