커넥션 풀(Connection Pool)이란?
WAS(웹 컨테이너)가 실행 될 때 DB연결을 위해 미리 일정수의 connection 객체를 만들어 Pool에 담아 뒀다가 사용자의 요청이 발생하면 Pool에서 생성되어 있는 Connection 객체를 넘겨주고 사용자가 사용이 끝나면 Connection 객체를 다시 Pool에 반환하여 보관하는 기법이다.
커넥션 풀 동작 과정
1. 사용자가 DB를 사용하기 위하여 Connection을 요청한다.
2. Connection Pool에서 사용되지 않고 있는 Connection 객체를 제공한다.
3. 사용자가 Connection 객체를 사용 완료하면 pool로 반환한다.
웹 어플리케이션에서 커넥션 풀을 사용해서 얻는 이점
1. 서버의 부하를 줄여준다.
웹 어플리케이션에서 커넥션 풀을 사용하는 이유중 우선 첫번째로 Java에서는 DB Connection을 맺는 과정이 부하가 많이 걸리는 작업이라 동시에 많은 사람들이 DB 커넥션을 요구한다면 최악의 경우 서버가 죽어버리는 문제가 발생할 수도 있다. 이러한 문제를 해결하기 위해 미리 Connection을 생성하고 재활용하여 서버에 부하를 줄여주는 용으로 사용한다.
2. 서버의 한정적인 자원을 효율적으로 사용할수 있다.
두번째로는 서버는 한정정인 자원을 가지고 있는데 요청이 올때마다 무제한의 Connection을 생성하게 된다면 전체 시스템에 성능에 문제가 생길 수 있다. 이러한 문제를 해결하기 위해 커넥션풀에 미리 정해진 숫자의 Connection을 생성해서 관리한다.
Java에서 커넥션 풀 설정
Java에서는 DataSource 인터페이스를 통해 커넥션 풀을 사용한다.
Spring Boot 2 버전의 경우 HikariCP를 기본 커넥션 관리 라이브러리로 가져간다.
'java' 카테고리의 다른 글
java Error, Checked Exception, Unchecked Exception - 삽질중인 개발자 (6) | 2021.03.15 |
---|---|
Java 문자열 비교 equals, == 차이점 - 삽질중인 개발자 (2) | 2021.02.21 |