아무것도 설정하지 않았을 경우 히카리 풀을 사용하고 있고, 설정은 안했기 때문에 기본값으로 설정이 되어 있따.
Spring Boot 에서는 Hikari Pool 이라는 Connection Pool 을 사용한다.
원래는 기본 설정으로 그냥 사용하지만 특수한 상황에는 설정을 변경할 수 있다.
Connection Pool 의 기본 설정 내용은 아래와 같다.
maximum-pool-size : Pool 에서 보관 가능한 최대 connection 수 (기본값 : 10)
→ 사용할 수 있는 connection 이 없으면 connection-timeout 까지 기다림
connection-timeout : Pool 에 connection 을 요청하고 기다리는 최대 시간 (기본값 : 30초_30000)
→ 이 시간이 넘어가면 SQLException 발생
idel-timeout : Pool에서 놀고 있는 connection 을 폐기하기 까지 기다리는 시간 (기본값 10분_600000)
max-lifetime : Connection 의 최대 유지시간 (기본값 30분_1800000)
→ 시간이 지난다고 바로 폐기하지 않고, 작업이 끝나면 바로 폐기 (DB 접속하면 Connection이 사용되고 바로 사라지기 때문에 보통 30분이 지나면 사용하지 않는다고 판단한다.)
→ 하지만 일을 하고 있을 수 있으니까 삭제 전 확인 절차를 거친다.
※ 이런 설정을 건드릴 때에는 사용자가 사용하지 않을 때 해야한다! (서버를 껐다 키면 설정이 다시 되면서 Connection Pool이 생성되는데 500개를 늘리면 사용자가 서버에 접근하지 못하는 경우가 생긴다.)
application.properties 에 들어가서 설정해주면 된다!
(계산을 할 수 없기 때문에 연산식이 아닌 계산된 시간 결과를 넣어줘야 한다.)
// connection pool default config
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.max-lifetime=1800000
Spring Boot에서 제공해주는 커넥션 풀의 이름이다.
pool 이란 미리 만들어두고 빌려주고 받는 개념으로 하나씩 만드는 것은 비효율적이기 때문에 미리 만들어두고 기다렸다가 제공, 반납을 하는 것이다.
커넥션 풀 : 커넥션을 미리 만들어 두고 빌려주고 받는 개념