CS
[DB] Connection pool(커넥션풀)이란?
그레고리력
2021. 7. 8. 18:35
Connection Pool(커넥션풀)
- Database에서 데이터를 얻어 오기 까지 가장 느린 부분은 웹 서버에서 DB서버에 처음 연결 후 Connection 객체를 생성하는 부분
- 웹 애플리케이션은 HTTP 요청에 따라 Thread를 생성하고 DB 서버로부터 데이터를 얻어옴
- DBCP(Database Connection Pool)를 이용하면 DB Connection 객체를 생성하는 부분에 대한 비용과 시간을 줄이고, 네트워크 연결 부하 감소
- Connection pool은 Connection을 여러 개 생성해 두어 저장해 놓은 공간(캐시), 또는 이 공간의 Connection을 필요할 때 꺼내 쓰고 반환하는 기법을 뜻함
- 롤백 기능은 connection 객체에서만 가능함, 브라우저의 각 요청마다 개별 db connection 객체를 사용해야함
- 모든 요청이 DB에 접근하고 있고 남은 Conncetion이 없다면, 해당 클라이언트는 대기 상태로 전환시키고 Pool에 Connection이 반환되면 대기 상태에 있는 클라이언트에게 순차적으로 제공
고려사항
- 커넥션풀이 작으면 대기 요청이 많아짐
- 너무 크면 메모리 낭비가 심함
Thread Pool
- 비슷한 맥락으로 Thread pool이라는 개념도 있음
- 이 역시 매 요청마다 요청을 처리할 Thread를 만드는것이 아닌, 미리 생성한 pool 내의 Thread를 소멸시키지 않고 재사용하여 효율적으로 자원을 활용하는 기법