DB 커넥션 풀에 대해서

JunSuPark·2024년 2월 27일

애플리케이션 에서 데이터베이스 커넥션을 획득 하는 과정은 이렇다.
1. 애플리케이션 로직-> [db 드라이버]를 통해 커넥션을 조회.
2. DB 드라이버는 DB와 TCP/IP 커넥션 연결함. (3 way handshake) 같은 네이트워크 동작 발생.
3. DB 드라이버는 TCP/IP 커넥션인 연결되면, id, pw와 기타 정보를 DB에 전달함.
4. DB는 ID,PW를 통해 내부 인증. 내부에 db 세션을 생성함.
5. DB는 커넥션 생성이 완료 되었다는 응답 보냄.
6. DB드라이버는 커넥션 객체를 생성해서 클라이언트에 반환.

보시다시피, 매번 새로운 커넥션을 만드는 과정이 번거롭고 시간도 많이 걸릴 것이다.

획득 하는 과정.

자 이렇게 시간이 많이 소모 되는건 고객 입장에서도 좋지 않으며, 매번 새로 사용 해야하니, 부담이 된다.

이런 문제를 해결 하고자 나온 개념이 커넥션 풀이다.

커넥션 풀이란 => 애플리케이션 시작하는 시점에 커넥션 풀은 필요한 만큼 커넥션을 미리 확보해서 풀에 보관하는 개념. (보통 10개 정도 보관함.)

이제 매번 DB 드라이버를 통해서 새로운 커넥션을 가져오는게 아니라, 커넥션 풀을 통해 이미 생성 되어 있는 커넥션을 객체 참조로 가져다 쓰면 되는것!

여기서 중요한 점은 커넥션을 모두 사용하고 나면 커넥션을 종료 하는것이 아닌 살아 있는 상태에서 커넥션 풀에 다시 반환한다.
( 스프링에선 성능과 사용의 편리함 측면에서 최근에는 hikariCP 를 주로 사용한다고 한다.)

  • 김영한 스프링 강의 참고
profile
배움을 추구하는 개발자

0개의 댓글