커넥션 풀

·2021년 4월 25일
0

Connection Pool

DBCP (database connection pool)

웹 컨테이너(WAS)가 실행되면서 DB와 미리 연결해놓은 객체들을 pool에 저장해두었다가 클라이언트 요청이 오면 connection을 빌려주고 처리가 끝나면 다시 connecrion을 반납받아 pool에 저장하는 방식

왜 필요할까?

DB를 접속할때가 가장 부하가 많이 걸린다.
그래서 DB 접근할때마다 연결 / 연결끊기를 하는게 아니라 미리 Pool에다 여러개 연결을 해 놓은 후 필요할 때마다 연결을 빌린 후 반납 한다

특징

  • 웹 컨테이너가 실행되면서 connection 객체를 미리 pool에 생성
  • HTTP 요청에 따라 pool에서 connecrion 객체를 가져다 쓰고 반환
  • 물리적인 db 연결 부하를 줄이고 연결을 관리한다
  • pool에 미리 connecrion이 생성되어 있기 때문에 connecrion을 생성, 연결시간이 소비되지 않는다
  • connecrion을 계속해서 재사용하기 때문에 생성되는 connecrion 수를 제한적으로 설정할 수 있다.

그럼 connecrion pool이 많으면 좋은걸까?

  • pool에서 미리 생성된 connection을 제공하고 없을 경우는 사용자는 connection이 반환될 때까지 번호순대로 대기상태로 기다린다.
  • 여기서 WAS에서 커넥션 풀을 크게 설정하면 메모리 소모가 큰 대신 많은 사용자가 대기시간이 줄어들고, 반대로 커넥션 풀을 적게 설정하면 그 만큼 대기시간이 길어진다.

종류

commons-dbcp

  • Apache Commons
  • 아파치에서 제공해주는 대표적 Connecrion Pool 라이브러리

tomcat-jdbc-pool

  • tomcat
  • tomcat에 내장되어 사용되고 있다
  • Apache Commons DBCP 라이브러리를 바탕으로 만들어짐

HikariCP

  • HicariCP
  • 스프링부트 2.0부터 default JDBC connecrion pool임
  • zero-overhead
    • overhead : 어떤 처리를 하기 위해 들어가는 간접저긴 처리시간 메모리

참고 사이트
[Spring] 커넥션 풀(Connection pool)이란?

profile
💻📝🤯

0개의 댓글