인프런 커뮤니티 질문&답변

mintuchel님의 프로필 이미지
mintuchel

작성한 질문수

스프링 DB 1편 - 데이터 접근 핵심 원리

왜 계속 커넥션 풀 내 새로운 커넥션을 사용하는 건가요?

해결된 질문

작성

·

296

·

수정됨

0

트랜잭션 매니져 사용하는 service 테스트 하는 MemberServiceV3_1Test 실행시키면 나오는 로그입니다.

 

제가 이해가 안가는 것은

find by id , save, delete 같은 repository 함수들은 항상 close를 마지막으로 끝내잖아요?

그럼 항상 커넥션 하나 사용한 다음에 다시 pool에 반환되니, 매번 conn0만 사용해야하는거 아닌가요?

 

그리고 지금 여러명이 DB에 들락거리는 것도 아니고 저 혼자만 테스트해보는건데

왜 한개의 커넥션이 아닌 여러개의 커넥션을 사용하게 되는 건가요?

 

커넥션 풀에 있는 다른 커넥션을 사용해야한다는 것은 특정 커넥션들이 트랜잭션 상태에 있기 때문에

어쩔 수 없이 풀에 남아있는 커넥션을 사용해야하는거잖아요?

근데 저 혼자만 테스트하면 매번 DB작업한 다음에 커넥션을 다시 커넥션풀에 갖다 놓을텐데(모든 repository 함수들이 close로 끝나기 때문에) 왜 conn0이 아닌 5 6 7번까지 사용하게 되는걸까요??

답변 1

1

안녕하세요. mintuchel님, 공식 서포터즈 David입니다.

일반적으로 커넥션 풀은 커넥션 재사용에 초점을 맞추고 있습니다. 사용자가 커넥션을 요청하면, 커넥션 순서가 아니라 '전체 커넥션 중 사용 가능한 커넥션 하나'를 반환합니다.

따라서, 이런 부분은 커넥션 풀을 구현한 라이브러리의 구현 내용에 따라 달라지는 점 참고해 주세요.

감사합니다.

mintuchel님의 프로필 이미지
mintuchel

작성한 질문수

질문하기