728x90
Connection pool?
: 프로그램에서 요청이 오면 미리 pool에 생성해둔 Connection 객체를 가져다쓰고, 완료시 pool에 반환하는 프로그래밍 기법
DBCP 특징
- 웹 컨테이너가 실행되면서 connection 객체를 미리 pool에 생성해 둔다.
- HTTP 요청에 따라 pool에서 connection객체를 가져다 쓰고 반환한다.
- 이와 같은 방식으로 물리적인 데이터베이스 connection 부하를 줄이고 연결 관리 한다.
- pool에 미리 connection이 생성되어 있기 때문에 connection을 생성하는 데 드는 요청마다 연결 시간이 소비되지 않는다.
- 커넥션을 계속해서 재사용하기 때문에 생성되는 커넥션 수를 제한적으로 설정함
장점
- 불필요한 작업(커넥션 생성, 삭제)가 사라지므로 성능향상을 기대할 수 있다.
- 보통의 DB접근의 경우 객체를 생성한 후 일일이 다시 close해줘야함 커넥션 풀을 사용하는 경우 Connection객체를 미리 만들어 놓고 사용하기 때문에 불필요한 생성과 삭제하는데 드는 비용(메모리차지)을 줄일 수 있다.
주의
- Connection 객체는 적정량만 생성해두어야 한다.
- 너무 많은 DB 접근이 발생할 경우 커넥션은 한정되어 있기 때문에 쓸 수 잇는 커넥션이 반납될때까지 기다려야 한다.
- 너무 많은 커넥션을 생성할 시 커넥션또한 객체이므로 많은 메모리를 차지한다. 그렇게되면 프로그램의 성능을 저하시키는 원인이 될 수 있다.
DBCP구조
initialSize : BasicDataSource 클래스 생성 후 최초로 getConnection() 메서드를 호출할 때 커넥션 풀에 채워 넣을 커넥션 개수
maxActive : 동시에 사용할 수 있는 최대 커넥션 개수( 기본값 : 8)
maxIdle : 커넥션 풀에 반납할 때 최대로 유지될 수 있는 커넥션 개수(기본값 : 8)
minIdle : 최소한으로 유지할 커넥션 개수(기본값 : 0)
*maxActive >= initialSize
*maxIdle >= minIdle
*maxActive >= maxIdle
요약
- JDBC는 자바 어플리케이션이 데이터베이스에 접근할 수 있도록 만든 JAVA에서 제공하는 API
- 하나의 JDBC로 각 DBMS 회사에서 제공하는 JDBC 드라이버를 통해 연결할 수 있음
- 커넥션풀 = JDBC 실행과정 중 생성되어야할 Connection객체를 미리 만들어서 pool이란 곳에 저장해두는 기법
- 불필요한 과정(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 |
댓글