티스토리 뷰

Spring

[ 스프링 DB ] 커넥션 풀

GiHoo 2023. 8. 14. 13:50

우리가 데이터베이스 커넥션을 생성하고 접근할 때 매번 리소스를 사용해야 한다.

또한, 응답 속도에도 영향을 주기에 좋지 않은 결과가 나올 수 있다.

데이터베이스 커넥션 획득 과정

 

이 문제를 해결하기 위해 커넥션 풀(Connection Pool)이라는 방법을 사용한다.

말 그대로, 커넥션들이 존재하는 풀을 만들어 놓고 관리하는 것이다.

애플리케이션이 시작하는 시점에 필요한 커넥션(서비스마다 상이)을 커넥션 풀에 초기화 시켜놓는 것이다.

이 커넥션들은 DB와 TCP/IP연결이 되어 있기에 커넥션 풀에 요청하여 접근하면 된다.

 

 

DataSource

커넥션을 획득하는 방법을 추상화하는 인터페이스

 

DataSource 활용하기

DriverManager vs DataSource

DriverManager의 경우 커넥션을 획득할 때마다 URL, USERNAME, PASSWORD 파라미터를 전달해줘야 한다.

반면, DataSource의 경우 처음 객체를 생성할 때만 파라미터를 전달하고 커넥션을 획득할 때에는 .getConnection()만 사용한다.

 

이를 설정과 사용의 분리 라고 한다.

dataSourceDriverManager에서는 dataSource가 필요한 파라미터를 통해 설정과 관련된 일을 진행하고, 

useDataSource에서는 파라미터를 몰라도 dataSource를 사용할 수 있게 된다.

dataSource 사용을 통해 더욱 유연하고 효율적인 작업을 할 수 있게 된 것이다.

 

 

Connection Pool

별도의 쓰레드를 사용해서 커넥션 풀에 커넥션을 채운다. 쓰레드는 커넥션 풀에 최대 커넥션 수만큼 채운다.

 

별도의 쓰레드를 사용하는 이유는 커녁센 풀에 커넥션을 채우는 것은 서비스 입장에서 시간을 잡아먹는다.

애플리케이션을 실행할 때 대기하기 보다는 별도의 쓰레드를 사용해서 커넥션 풀을 채우는 것이 시간을 아낄 수 있다.

 

 

 

 

본 포스팅은 인프런 강의 김영한님의

[ 스프링 DB 1편 - 데이터 접근 핵심 원리 ] 를 수강하며 작성한 내용입니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30