JAVA

[JAVA] DBCP (DB Connection Pool)

집한구석 2021. 7. 18. 00:03
728x90

DBCP 정의

https://ppt-online.org/611650 참고

  • 미리 일정 수의 Connection을 만들어서 Pool에 담아 뒀다가 사용자의 요청이 발생하면 연결을 해주고 연결종료 시 Pool에 다시 반환하여 보관하는 데이터베이스 연결 캐시

DBCP 사용목적

  • DB에 Connection을 생성할 때 연결정보 생성 시간 비용이 많이 소모됨, DBCP를 사용하면 Connection 정보를 메모리영역에서 저장 / 관리하기 때문에 어플리케이션 단에서 비용 문제를 줄일 수가 있음  

DBCP 장점

  • DB Connection 수를 제한할 수 있어 과다한 접속으로 인한 서버의 자원 고갈을 예방 
  • DB 접속 모듈을 공통화하여 DB서버환경이 바뀔 경우 유지보수를 수월하게 함
  • 메모리영역에 커넥션 정보를 관리하기 때문에 클라이언트가 그만큼 접속을 더빠르게 할 수 있음

DBCP 종류

  • Apache Commons DBCP : 아파치에서 제공하는 보편적으로 많이 사용하고 있는 DBCP
  • HikariCP : 스프링부트 2.0부터 기본 DBCP, Commons DBCP보다 빠르다고함 (자기네들 주장임)

DBCP 고려사항

  • maxActive(커넥션 최대개수)는 성능요소중 매우 중요하며, 커넥션이 많이 몰릴 경우 maxActive 설정이 모자르면 병목현상이 발생할 수 있음, 반대로 너무 크게 설정할 경우 불필요하게 메모리를 많이 점유하기 때문에 적절한 값을 설정해줘야 함
  • WAS Thread 수는 DB Connection Pool개수보다 크게 설정해야함 (모든 요청이 DB에 접근하는 것이 아니기 때문에)

'JAVA' 카테고리의 다른 글

[JAVA] TreeMap  (0) 2021.11.08
[JAVA] Junit5  (0) 2021.10.13
[JAVA] Stack / Deque  (0) 2021.07.16
[JAVA] e.printStackTrace() 사용하지 말아야하는 이유  (3) 2021.07.04
[JAVA] List Collection(ArrayList / LinkedList / Vector)  (0) 2021.06.26