본문 바로가기

cs(with 매일메일)

[251013월] 데이터베이스 커넥션 풀(Connection Pool)을 사용하지 않으면 어떤 문제가 발생할 수 있나요?

애플리케이션과 데이터베이스가 통신하기 위해서는 데이터베이스 커넥션이 필요합니다. 

 

데이터베이스 커넥션 생애주기

- 데이터베이스 드라이버를 사용하여 데이터베이스에 연결

- 데이터 읽기/쓰기를 위한 TCP소켓 열기

- 연결 종료

- 소켓 닫기

 

커넷션 풀이 없다면 애플리케이션에서 데이터베이스에 접근해야하는 요청을 처리할 때 마다

커넥션을 새로 생성하여 연결, 해제하는 과정을 반복해야 한다.

 

또 동시에 많은 요청이 들어올 경우 매번 새로운 커넥션을 생성하면, 최대 연결 수를 초과할 수 있다. 

 

데이터베이스 커넥션 풀을 사용함으로써 얻을 수 있는 장점은? 

커넥션 풀(Connection Pool) : 애플리케이션과 데이터베이스 간의 데이터베이스 연결을 미리 생성해두고, 이를 재사용하는 기법

> 미리 준비된 연결을 재사용함으로써 성능을 향상, 사용을 최적화할 수 있다. 

 

커넥션 풀 사이즈는 클 수록 좋나요? 

커넥션을 사용하는 주체는 스레드(Thread)이기 때문에 커넥션과 스레드를 연결지어 생각해야 한다. 

커넥션 풀 사이즈 > 스레드 풀 사이즈 : 스레드가 모두 사용되지 못해서 리소스 낭비 

커넥션 풀 사이즈 < 스레드 풀 사이즈 : 스레드가 커넥션이 반환되기를 기다려야 하기 때문에 작업이 지연