Diary/WIL
2024-04-28
nsean
2024. 4. 29. 00:27
커넥션 풀
- 초기화: 애플리케이션 시작 시, 설정에 따라 정해진 수의 데이터베이스 연결을 생성하고 풀에 저장
- 재사용: 애플리케이션이 데이터베이스 연결을 요구할 때, 풀에서 연결을 꺼내어 사용
- 반환: 작업이 끝나면 연결을 풀로 반환합니다, 연결은 닫히지 않고 다음 요청 때 재사용
이 과정을 통해서 작동된다.
이 기술을 사용함으로써 기대할 수 있는 점은,
- 미리 생성된 db 연결을 사용하기 때문에 성능 향상을 기대할 수 있고,
- 수많은 db 연결을 생성/제거 하는 작업을 커넥션 풀을 사용하여 최적화하였다.
- 또한 Spring Boot에서는 기본적으로 HikariCP를 사용하기에 별도의 설정이 필요하지 않다.
바로 application.yml에서 설정을 해줌으로써 사용해줄 수 있는데,
spring:
datasource:
url: jdbc:mysql://localhost:3306/yourDatabase
username: dbuser
password: dbpass
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
connection-timeout: 30000
minimum-idle: 10
maximum-pool-size: 50
idle-timeout: 600000
max-lifetime: 1800000
pool-name: SpringBootHikariCP
- connection-timeout: 커넥션을 풀에서 가져오기를 기다리는 최대 시간 (밀리초 단위)
- minimum-idle: 풀이 유지하는 최소 유휴 커넥션 수
- maximum-pool-size: 풀에서 관리하는 최대 커넥션 수
- idle-timeout: 커넥션이 유휴 상태에서 풀에 보관될 수 있는 최대 시간 (밀리초 단위)
- max-lifetime: 커넥션의 최대 수명 (밀리초 단위)
- pool-name: 커넥션 풀의 이름
하지만 단점으로 성능 오버헤드가 발생할 수 있기에 이 점에 유의하여 사용하는게 좋다.
추가적으로 동적으로 poolsize를 조정해줄 수 있다고 하는데, HikariCP에서는 기능이 지원되지 않는다고 한다.
직접 구현하거나 다른 라이브러리를 사용해야 한다고 한다.