DB Connection Pool이란?

김동호·2022년 4월 28일
0

Whatis

목록 보기
4/6
post-thumbnail

DB Connection Pool

  • 연결 풀 또는 Connection Pool은 소프트웨어 공학에서 데이터베이스로의 추가 요청이 필요할 때 연결을 재 사용할 수 있도록 관리되는 데이터 베이스 연결의 캐시이다.

  • 각 사용자마다 데이터베이스의 연결을 열고 유지보수 하는 것은 비용이 많이 들고 자원을 낭비한다. Connection Pool의 경우 연결이 수립된 이후에 Pool에 위치해 있으므로 다시 사용하면 새로운 연결을 수립할 필요가 없어진다. 모든 연결이 사용 중이면 새로운 연결을 만들고 Pool에 추가된다. 연결 Pool은 사용자가 데이터베이스에 연결을 수립하는데 까지 대기해야 하는 시간을 줄이기도 한다.

  • 다시 말해 데이터베이스와 연결된 Connection을 미리 만들어서 Pool 속에 저장해 두고 있다가 Connection을 Pool에서 쓰고 다시 Pool에 반환하는 기법을 말한다.
    미리 생성해 두기 때문에 데이터베이스에 부하를 줄이고 유동적으로 연결을 관리할 수 있습니다.

  • Connection Pool을 너무 크게 해놓으면 당연히 메모리 소모가 클 것이고, 적게 해 놓으면 Connection이 많이 발생할 경우 대기 시간이 발생하기 때문에 서버 부하에 따라 크기 조정을 해야 합니다.

정리

  1. Pool속에 Connection이 생성되어 있기 때문에 Connection을 생성하는데 드는 연결 시간이 소비되지 않습니다.
  2. Connection을 계속해서 재 사용하기 때문에 생성되는 Connection수가 많이 없습니다.
  3. Connection Pool을 사용하면 Connection을 생성하고 닫는 시간이 소모되지 않기 때문에 그만큼 애플리케이션의 실행 속도가 빨라지며, 또한 한 번에 생성될 수 있는 Connection 수를 제어하기 때문에 동시 접속자 수가 몰려도 웹 애플리케이션이 쉽게 다운되지 않습니다.
  4. Connection Pool에서 생성되어 있는 Connection의 개수는 한정적입니다.
  5. 동시 접속자가 많아지면 Connection Pool은 누군가 접속하면 Connection Pool에 남아 있는 Connection을 제공하는 식입니다.
  6. 남아 있는 Connection이 없을 경우 해당 클라이언트는 대기 상태로 전환이 되고, Connection이 반환되면 대기하고 있는 순서대로 Connection이 제공됩니다.

참고

[위키디피아] : https://ko.wikipedia.org/wiki/%EC%97%B0%EA%B2%B0_%ED%92%80
[불곰] : https://brownbears.tistory.com/289

profile
Backend Dev

0개의 댓글