커넥션풀
db가 커넥션을 할때의 과정
- 애플리케이션 로직이 db드라이버를 통해 커넥션을 조회한다.
- db드라이버는 db와 tcp/ip 커넥션 연결을 한다.
- db 드라이버는 id,pw와 기타 부가 정보를 db에 전달한다.
- db는 id,pw를 통해 내부인증을 완료해고 내부에 db 세션을 생성한다.
- db는 커넥션이 생성이 완료되었다는 응답을 보낸다.
- db드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다.
위와같은 과정을거치기때문에 생각보다 복잡한 과정과 많은 시간이 소모 되는 일이다.
데이터베이스마다 커넥션 시간은 다 다르다.
위 와같은 문제를 해결하기 위해 생긴 방법이 커넥션 풀이다.
커넥션 풀 이해
커넥션풀은 커넥션을 미리 생성해두고 사용하는 방법이다.
보통 기본 커넥션 값은 보통 10개이다. 미리 10개를 만들어놓고 tcp/ip로 연결돼 있는 상태로 즉시 sql을 바로 db에 전달할 수 있도록 한다.
이제 애플리케이션은 이미 생성된 커넥션을 객체 참조로 그냥 가져다 쓴다.
그리고 반환을 할때 커넥션을 종료하는것이 아니라 커넥션이 살아있는 상태로 커넥션 풀에 반환해야한다.
커넥션 풀의 문제점
- 커넥션 풀 숫자는 서비스의 특정과 애플리케이션 서버 스펙, db서버 스펙에 따라 다르기때문에 성능 테스트를 통해서 정해야 한다.
- 직접 구현할수도 있지만 성능이 뛰어난 오픈소스 커넥션 풀이 많다.
- 대표적인 커넥션 풀은 HikariCp등이 있다. spring2.x의 기본 커넥션풀 오픈소스이다.
'Springboot' 카테고리의 다른 글
JPA /save , saveAll 사용시 주의 사항들 (0) | 2023.08.16 |
---|---|
Data Source 이해 (0) | 2023.08.16 |
select시 update쿼리 날라갈때 (0) | 2023.08.16 |
Springboot DataJPA 선택적으로 수정하기 (0) | 2023.08.14 |
Spring boot-Cache Control Headers 하는법 (0) | 2023.08.14 |