커넥션풀

sunghun Jung·2022년 5월 21일
0

커넥션 풀은 DB 커넥션을 매번 생성하면서 발생하는 문제인 사용되는 리소스와 생성 시간으로 인해 응답 속도가 늦어지는 것을 해결하는 방법이다.
애플리케이션 로딩 시 DB와 연결된 커넥션을 미리 생성해두고 커넥션 풀에 저장해 사용하며, 연결이 이미 되어있기 때문에 요청이 들어왔을 때 즉시 SQL문을 전달할 수 있다. 커넥션을 생성하여 풀을 채우는 것은 상대적으로 오래 걸리기에 애플리케이션 시작시 별도의 쓰레드에서 동작하여 커넥션 풀을 채운다.

커넥션을 매번 생성하는 것이 아닌 풀로부터 커넥션의 래퍼런스 값을 얻어 사용하고, 사용이 끝난 커넥션은 다시 사용할 수 있도록 종료하는 것이 아닌 그대로 풀에 반환한다.
이 때 주의할 점은 여러 작업을 처리하기 위한 트랜잭션을 시작할 때 수동 커밋으로 시작하였다면 반환할 때는 다시 자동 커밋으로 전환한 후 반환해야 한다.

커넥션 풀의 커넥션은 종료하는 것이 아닌 그대로 반환한다. 풀의 커넥션들은 DB 세션과 연결되어 있는 상태이기 때문에 바뀐 설정 값들을 유지한다. 다른 요청을 처리하기 위해 재사용되는 커넥션이 수동 커밋으로 되어 있다면 문제가 발생한다.

커넥션 풀을 생성하는 작업은 애플리케이션 실행 속도에 영향을 주지 않기 위해서 별도의 쓰레드에서 동작한다. 커넥션을 풀에 채우는 것은 상대적으로 오래 걸리는 작업이어서 마냥 대기한다면 애플리케이션 실행 시간이 느려진다.

참고 - 스프링 부트 2.x 버전 부터는 hikariCP라는 커넥션 풀을 기본으로 제공한다

0개의 댓글