Connection Pool 이해하기
Connection Pool이란?
Connection Pool을 알아보기 이전에 Connection Pool이 등장하게 된 이유부터 알아보자!
애플리케이션은 DB에 접근하기 위해서 커넥션을 얻어야지만 DB와 통신을 할 수 있다. (Connection 대한 내용은 아래 링크에서 확인)
2024.03.22 - [CS/데이터베이스] - JDBC 알아보기
JDBC 알아보기
JDBC 알아보기 JDBC란? JDBC를 알아보기 전 JDBC가 왜 생겼는지에 대해서 먼저 이야기를 해보자면 과거 애플리케이션 서버와 DB를 연결하기 위해서 가각의 DB마다 사용법이 달랐다. 이런 문제로 개발
yukang-laboratory.tistory.com
위 내용을 보고 왔으면 Connection이 어떤 방식으로 연결되어 사용되는지 알 수 있고 이런 방식이 개발자에게는 개발을 매우 번거로운 상황이 발생할 것이라고 생각할 수 있다!
더 효율적으로 Connection을 얻기 위해서 Connection Pool이 사용된 것이라고 이해하고 일단은 아래 설명을 계속 보면 될 것이다!!
애플리케이션에서 DB를 Connection을 얻기 위해서는 개발자의 코드만이 있는 것이 아니라 TCP/IP 통신을 통해서 연결을 하는데 하나의 액션(서비스)마다 데이터를 조회 및 수정하는 작업이 필요할 때 매번 DB와의 통신을 위해 Connection을 연결하는 것은 서비스의 품질 및 속도가 낮아질 수 있는 문제가 있어 이런 문제를 해결하기 위해서 Connection Pool을 사용한다고 보면 된다.
서비스 제공시간 = DB드리이버 조회시간 + TCP/IP연결시간 + Connection생성시간 + SQL실행 시간
이런 시간이 너무나 늘어나기 때문에 Connection을 미리 만들고 재사용하는 Connection Pool을 사용한다.
DB와 Connection을 얻기 위한 작업
- 애플리케이션에서 서비스 요청
- 애플리케이션 DB 드라이버를 통해 Connection 조회
- 애플리케이션 DB드라이버에서 DB로 TCP/IP를 연결
- TCP/IP 연결 후 부가정보를 DB로 전송
- DB에서 Connection 생성 후 애플리케이션에 ACK 응답
- DB드라이버에서 Connection객체를 만들어 애플리케이션에 반환
위와 같은 복잡한 과정을 줄이는 방법으로 Connection Pool을 사용하여 DB와 연결할 수 있다.
- 애플리케이션에서 서비스 요청
- Connection Pool에서 Connection을 가져온다.
- Connection을 사용하여 DB에 SQL 전달
- 사용 후 Connection Pool에 할당된 Connection 반환
정리
Connection Pool은 서버의 스펙, DB의 스펙에 따라 유동적으로 바뀌며, DB에 연결되는 Connection의 개수를 제한하여 DB의 과부하를 막아주는 역할도 수행할 수 있다. Spring에서는 HikariCP라는 Connection Pool을 기본으로 사용한다.
'CS > Spring' 카테고리의 다른 글
Spring Bean 알아보기 (0) | 2024.05.31 |
---|---|
DataSource 알아보기 (1) | 2024.03.31 |
Spring MVC과 관심사 분리 (1) | 2024.03.17 |
h2 DB에서 mysql로 변경하기 (2) | 2022.12.03 |
의존관계 주입 방법 4가지 (1) | 2022.09.28 |