Pooling 기법이란?

Pooling 기법이란 미리 데이터베이스 Connection을 여러 개 만들어서 특정 공간에 저장해 놓고,
여러 사용자가 필요할 때 마다 하나씩 꺼내서 사용하고 다시 집어 넣는 방식을 말합니다. 지금까지는 JDBC에서 Connection이 필요할 때마다 생성하고, 직접 종료 시켜야 했습니다. 하지만 Connection Pooling 기법에서는 Connection Pool이라는 커넥션 관리자가 연결과 해제를 직접 관리 합니다. 데이터베이스 작업을 수행할 JSP 파일들은 Connection Pool로부터 커넥션을 하나 할당 받아서 사용하고, 사용한 후에는 다시 Connection Pool에게 넘겨줍니다. Cnnection Pool에게 넘겨진 Connection은 다른 데이터베이스 연결이 있을 때 재사용됩니다.


 
Pooling 기법

n       Connection을 생성해서 보관

n       Connection에 대한 요청이 들어오면, 보관중인 Connection중 하나를 넘겨줌

n       사용이 끝난 Connection을 다시 보관



< 출처 : http://www.jabook.org/ >



< 출처 : http://www.jabook.org/ >

Connection Pooling 기법을 사용하는 이유는 다음과 같습니다.

     Connection Pooling의 장점
n       속도향상
n       자원공유
n       Connection객체 제어

Connection 클래스는 객체화 될 때, 다른 일반적인 클래스들과는 달리 수초의 시간이 걸립니다.
이 시간은 만약 데이터베이스가 원격지에 존재한다면, 네트워크의 상태에 따라 더 지연이 될 수도 있습니다. 만약 우리가 만들 JSP 페이지가 빈번하게 데이터베이스 Connection 을 생성한다면, 이러한 시간적인 오버헤드는 전체 JSP를 느리게 만들 것입니다. 이 경우, JSP가 시작될 때 일정수의 Connection을 미리 만들어 놓고, Connection Pool을 통해 재사용 한다면 상당한 속도 향상을 기대할 수 있을 것입니다.

또 다른 측면에서 살펴보면, 데이터베이스에 대한 Connection은 우리의 시스템이 가지고 있는 자원(CPU, MEMORY, 네트워크 대역폭 등)을 일정량 사용하고 있습니다. 시스템의 자원은 한정 되어 있기 때문에, 사용자 수가 많다고 해서, 무제한 데이터베이스 Connection을 만들 수는 없습니다. 만약 시스템이 가지고 있는 자원을 초과해서 Connection을 생성하고 사용한다면, 전체 시스템의 성능은 크게 떨어질 것입니다. 또한 갑자기 시스템이 정지하는 등 예측할 수 없는 상황을 불러 일으킬 수도 있습니다. 이런 경우를 막기 위해, Connection Pool에 시스템이 허용 가능한 수만큼의 데이터베이스 Connection을 만들어 놓고, 공유해서 사용함으로써 전체 시스템의 성능을 향상시키고 안정되게 만들어 줄 수 있습니다.

출처 : http://blog.naver.com/reomereome?Redirect=Log&logNo=40026698128

+ Recent posts