본문 바로가기
DB

Connection pool?

by 상국이 2021. 7. 6.
728x90

Connection pool?

: 프로그램에서 요청이 오면 미리 pool에 생성해둔 Connection 객체를 가져다쓰고, 완료시 pool에 반환하는 프로그래밍 기법

 

DBCP 특징

  1. 웹 컨테이너가 실행되면서 connection 객체를 미리 pool에 생성해 둔다.
  2. HTTP 요청에 따라 pool에서 connection객체를 가져다 쓰고 반환한다.
  3. 이와 같은 방식으로 물리적인 데이터베이스 connection 부하를 줄이고 연결 관리 한다.
  4. pool에 미리 connection이 생성되어 있기 때문에 connection을 생성하는 데 드는 요청마다 연결 시간이 소비되지 않는다.
  5. 커넥션을 계속해서 재사용하기 때문에 생성되는 커넥션 수를 제한적으로 설정함

 

장점

  1. 불필요한 작업(커넥션 생성, 삭제)가 사라지므로 성능향상을 기대할 수 있다.
  2. 보통의 DB접근의 경우 객체를 생성한 후 일일이 다시 close해줘야함 커넥션 풀을 사용하는 경우 Connection객체를 미리 만들어 놓고 사용하기 때문에 불필요한 생성과 삭제하는데 드는 비용(메모리차지)을 줄일 수 있다.

 

주의

  1. Connection 객체는 적정량만 생성해두어야 한다. 
  2. 너무 많은 DB 접근이 발생할 경우 커넥션은 한정되어 있기 때문에 쓸 수 잇는 커넥션이 반납될때까지 기다려야 한다.
  3. 너무 많은 커넥션을 생성할 시 커넥션또한 객체이므로 많은 메모리를 차지한다. 그렇게되면 프로그램의 성능을 저하시키는 원인이 될 수 있다. 

DBCP구조

initialSize : BasicDataSource 클래스 생성 후 최초로 getConnection() 메서드를 호출할 때 커넥션 풀에 채워 넣을 커넥션 개수

maxActive : 동시에 사용할 수 있는 최대 커넥션 개수( 기본값 : 8)

maxIdle : 커넥션 풀에 반납할 때 최대로 유지될 수 있는 커넥션 개수(기본값 : 8)

minIdle : 최소한으로 유지할 커넥션 개수(기본값 : 0)

*maxActive >= initialSize

*maxIdle >= minIdle

*maxActive >= maxIdle

 

요약

  1. JDBC 자바 어플리케이션이 데이터베이스에 접근할 있도록 만든 JAVA에서 제공하는 API
  2. 하나의 JDBC DBMS 회사에서 제공하는 JDBC 드라이버를 통해 연결할 있음
  3. 커넥션풀 = JDBC 실행과정 생성되어야할 Connection객체를 미리 만들어서 pool이란 곳에 저장해두는 기법
  4. 불필요한 과정(Connection 객체를 생성, 삭제) 줄여 성능을 향상시킬 있다는 장점이 있다.
728x90

'DB' 카테고리의 다른 글

DynamoDB?  (0) 2021.07.06
[DB] Sharding  (0) 2021.06.24
[MySQL] Explain  (0) 2021.06.24
[DB]Partitioning  (0) 2021.06.24

댓글