종식당

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

매일메일

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

종식당 2025. 3. 11. 09:59
728x90
반응형

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

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

  • 데이터베이스 드라이버를 사용하여 데이터베이스에 연결
  • 데이터 읽기/쓰기를 위한 TCP소켓 열기
  • 소켓을 통한 데이터 읽기/쓰기
  • 연결 종료
  • 소켓 닫기

커넥션 풀이 없다면 애플리케이션에서 데이터베이스에 접근해야 하는 요청을 할 때마다 커넥션을 새로 생성하여 연결하고 해제하는 과정을 반복해야 한다. 이 과정은 비용이 상당히 많이 들기 때문에 요청의 응답시간이 길어진다.

또 동시에 많은 요청이 들어올 경우 매번 새로운 커넥션을 생성하게 되는데, 데이터베이스의 최대 연결 수를 초과할 수 있다. 데이터베이스는 일반적으로 동시에 처리할 수 있는 요청 개수에 제한이 있는데, 이 제한을 초과하면 요청이 거부되어 사라지거나, 데이터베이스 자체가 비정상 종료될 수 있다.

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

커넥션 풀은 애플리케이션과 데이터베이스 연결을 미리 생성해두고, 이를 재사용하는 기법을 말한다. 데이터베이스에 접근할 때마다 새로운 연결을 생성하고 종료하는 대신, 미리 준비된 연결을 재사용함으로써 성능을 향상하고 자원 사용을 최적화할 수 있다.

커넥션 풀의 주요 구성 요소는 초기 풀 크기, 최소 풀 크기, 최대 풀 크기, 연결 대기 시간 등이 있고, 이를 통해 커넥션을 효율적으로 관리하고 사용할 수 있다.

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

커넥션을 사용하는 주채는 스레드이기 때문에, 커넥션과 스레드를 연결 지어 생각해야 한다. 만약 커넥션 풀 사이즈모다 크면, 스레드가 모두 사용하지 못해 리소스 낭비가 된다. 반대로 커넥션 풀 사이즈가 스레드 풀 사이즈 보다 작으면, 스레드가 커넥션이 반환되기를 기다려야 하기 때문에 작업이 지연된다.

커넥션 풀 사이즈와 스레드 풀 사이즈의 균형이 맞더라도, 너무 큰 사이즈로 설정하면, 데이터베이스 서버, 애플리케이션 서버의 메모리와 CPU를 과도하게 사용하게 되므로 성능이 저하된다.

728x90
반응형