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를 소멸시키지 않고 재사용하여 효율적으로 자원을 활용하는 기법
'CS' 카테고리의 다른 글
[DB]트랜잭션(Transaction) (0) | 2021.07.12 |
---|---|
[운영체제]프로세스 스케줄링 (0) | 2021.07.09 |
데이터 바인딩(정적 바인딩, 동적바인딩, 단방향, 양방향 바인딩) (0) | 2021.07.07 |
[DB] 데이터베이스 sharding, clustering, replication (0) | 2021.07.06 |
[운영체제]리눅스 파일시스템과 메모리관리 (0) | 2021.07.05 |