Spring Boot에서 자동으로 설정되는 커넥션 풀로 API 요청 속도 향상
들어가며
특별히 무엇인가를 해결한 내용은 아니고, 개발 도중에 궁금해서 찾아본 내용을 정리해놓은 글이다.
카풀 프로젝트인 MIO 에서 Fetch.LAZY 와 EAGER 로 인한 성능을 AOP를 이용하여 메서드 실행시간을 측정하다 보니, 중복 API 요청에 대한 속도 차이가 굉장히 크게 나는 것을 확인했다.
위 사진은 중복 API 요청에 대한 속도 차이를 확인한 사진이다.
왜 이런 결과가 나오는 지 궁금해져서 검색을 하던 도중 커넥션 풀에 대해 알게되었다.
커넥션 풀
커넥션 풀이란 추가 요청이 필요할 때 연결을 재사용할 수 있도록 관리되는 데이터베이스 연결의 캐시라고 한다.
Spring 2.0 부터는 Default 커넥션 풀로 hikariCP를 자동으로 제공해준다고 한다.
커넥션 풀
-
애플리케이션을 시작하는 시점에 커넥션 풀은 필요한 만큼의 커넥션을 미리 확보해서 커넥션 풀에 보관한다.
-
보통 커넥션의 개수는 Default로 10개다.
-
커넥션 풀에 들어있는 커넥션은 TCP/IP로 DB와 커넥션이 연결되어 있는 상태이기 때문에 언제든지 즉시 SQL을 DB에 전달할 수 있다.
커넥션 풀 사용 과정
-
애플리케이션에서 DB 커넥션을 요청한다.
-
커넥션 풀에서 사용 가능한 커넥션을 찾는다.
-
애플리케이션 로직은 커넥션 풀에서 받은 커넥션을 사용해서 SQL을 DB에 전달하고, 그 결과를 받아서 처리한다.
-
애플리케이션 로직이 SQL 처리를 마치면 커넥션을 커넥션 풀에 반환한다.
결과
결과적으로 커넥션 풀은 사용 중인 연결을 재사용한다는 것이다.
클아이언트가 연결을 반환하면 이 연결을 다시 사용 가능한 상태로 설정하고 다음 요청에 재사용한다.
이 과정에서 중복 연결 생성 및 해제로 인한 오버헤드를 방지하고 애플리케이션의 응답속도를 빠르게 유지하는 데 도움이 된다.
Leave a comment