웹/spring
커넥션풀 (Connection Pool, DBCP) / Datasource
은은하게미친자
2022. 8. 25. 12:36
728x90
커넥션풀 (Connection Pool, DBCP)
: DB와 커넥션을 맺고있는 객체를 관리 하는 역할을 한다.
일반적으로 여러명의사용자를 동시에 처리해야 하는 웹 애플리케이션의 경우 데이터베이스 연결을 이용할때 사용한다.
종류로는 commons dbcp, tomcat- jdbc, bonecp, hikaricp 등이 있습니다.
+ 기존 JDBC 드리어를 로드하고 CONNCTION객체를 받아오는 방식 (Plain JDBC 방식)은
매번 사용자가요청 할 떄마다 드라이버를 로드하고 커넥션 객체를 생성하여 연결하고 종료하기 때문에 매우 비효율적이다.
커넥션풀 처리 방식
- 웹컨테이너(was, 톰캣) 가 실행되면서 connection객체를 미리 pool에 생성해둡니다
- http요청에 따라 poll에서 connection객체를 가져다 쓰고 반환합니다.
- pool에서 미리 connection이 생서되어 있기 때문에 connection을 생성하는데 요청마다 연결시간이 소비 되지 않습니다.
- 커넥션을 계쏙 해서 재사용하기 때문에 생성되는 커넥션 수를 제한적으로 설정합니다.
커넥션풀, 동시접속자가 많은경우?
: 동시접속할 경우 pool에서미리 생성된 connection을 제공하고 없을경우 사용자는 connection이 반환 될 때까지 번호순서대로 대기상태로 기다린다.
커넥션풀을 크게 설정할 경우 메모리 소모가 큰 대신 맣은 사용자가 대기시간이 줄어들고
커넥션풀을 작게 설정할 경우 그만큼 대기 시간이 줄어든다.
Datasource ?
: Connection Pool을 구현하기위한 스펙을 정해 놓은 인터페이스 로
DB 연동과 관련 로직들이 추상화 되어있으며 DB연결을 위해 사용되는 객체 입니다.
728x90