Skip to content

[recap] 커넥션 풀(Conncetion Pool)와 HikariCP #3

@JungYoonShin

Description

@JungYoonShin

무엇을 알게 되었나요?

👉 커넥션 풀이란?

미리 데이터베이스와 연결시킨 상태를 유지하는 기술, 웹 애플리케이션과 같은 다중 사용자 환경에서 데이터베이스 연결을 효율적으로 관리하기 위해 사용된다.

클라이언트와 서버 사이드인 웹 어플리케이션에서 데이터베이스 연결을 위해 미리 일정수의 Connection 객체를 만들어 Pool에 담아 둔다. 추후 사용자의 요청이 발생하면 Pool에서 생성되어 있는 Connection 객체를 넘겨주고 처리가 끝나면, 실행된 상태로 Connection 객체를 다시 Pool에 반환하여 보관하는 기법이다.

image

👉그렇다면 커넥션 풀의 장점은 무엇일까?

  1. 성능 개선: 데이터베이스 연결은 비용이 큰 작업이다. 매번 요청이 발생할 때마다 새로운 연결을 생성하는 것은 오버헤드가 크다. 커넥션 풀을 사용하면 미리 일정 수의 연결을 생성해두고, 요청이 발생하면 풀에서 사용 가능한 연결을 제공하여 연결 생성 및 해제에 따른 오버헤드를 줄일 수 있다. 이는 애플리케이션의 응답 시간을 향상시키고, 데이터베이스 서버의 부하를 감소시킨다.
  2. 확장성: 커넥션 풀은 요청이 증가함에 따라 자동으로 연결을 확장할 수 있다. 즉, 동시에 여러 사용자가 애플리케이션에 접속해도 풀에 미리 생성된 연결을 사용하여 서비스의 안정성을 유지할 수 있다. 필요에 따라 커넥션 풀의 크기를 조정하여 최적의 성능과 확장성을 달성할 수 있다.

등등등..

SpringBoot 2.0 이전에는 tomcat-jdbc를 사용하다, 현재 2.0이후 부터는 HikariCP를 기본옵션으로 채택 하고있다.

👉 Hikari CP 사용법

build.gradle에 "org.springframework.boot:spring-boot-starter-jdbc"를 추가하면 자동으로 추가된다고 한다! 그리고 application.yml 수정!

이후 application.yml에 설정값을 추가하면 되는데

spring:
 datasource:
   url: jdbc:mysql://localhost:3306/world?serverTimeZone=UTC&CharacterEncoding=UTF-8
   username: root
   password: your_password

   hikari:
     maximum-pool-size: 10
     connection-timeout: 5000
     connection-init-sql: SELECT 1
     validation-timeout: 2000
     minimum-idle: 10
     idle-timeout: 600000
     max-lifetime: 1800000

server:
 port: 8000
스크린샷 2024-07-03 오후 12 21 07

어려운 내용이 있었다면 이를 어떻게 해결하였나요?

  • 구글링!

어떤 자료를 참고하였나요?

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions