본문 바로가기

CS/Spring

Connection Pool 이해하기

반응형
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을 얻기 위한 작업

  1. 애플리케이션에서 서비스 요청
  2. 애플리케이션 DB 드라이버를 통해 Connection 조회
  3. 애플리케이션 DB드라이버에서 DB로 TCP/IP를 연결
  4. TCP/IP 연결 후 부가정보를 DB로 전송
  5. DB에서 Connection 생성 후 애플리케이션에 ACK 응답
  6. DB드라이버에서 Connection객체를 만들어 애플리케이션에 반환

위와 같은 복잡한 과정을 줄이는 방법으로 Connection Pool을 사용하여 DB와 연결할 수 있다.

  1. 애플리케이션에서 서비스 요청
  2. Connection Pool에서 Connection을 가져온다.
  3. Connection을 사용하여 DB에 SQL 전달
  4. 사용 후 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