종식당
[매일메일 2025-03-03] 데이터베이스 커넥션 풀(Connection Pool)을 사용하지 않으면 어떤 문제가 발생할 수 있나요? 본문
[매일메일 2025-03-03] 데이터베이스 커넥션 풀(Connection Pool)을 사용하지 않으면 어떤 문제가 발생할 수 있나요?
종식당 2025. 3. 11. 09:59애플리케이션과 데이터베이스가 통신을 하기 위해서는 데이터베이스 커넥션이 필요하다.
🎑 데이터베이스 커넥션의 생애주기
- 데이터베이스 드라이버를 사용하여 데이터베이스에 연결
- 데이터 읽기/쓰기를 위한 TCP소켓 열기
- 소켓을 통한 데이터 읽기/쓰기
- 연결 종료
- 소켓 닫기
커넥션 풀이 없다면 애플리케이션에서 데이터베이스에 접근해야 하는 요청을 할 때마다 커넥션을 새로 생성하여 연결하고 해제하는 과정을 반복해야 한다. 이 과정은 비용이 상당히 많이 들기 때문에 요청의 응답시간이 길어진다.
또 동시에 많은 요청이 들어올 경우 매번 새로운 커넥션을 생성하게 되는데, 데이터베이스의 최대 연결 수를 초과할 수 있다. 데이터베이스는 일반적으로 동시에 처리할 수 있는 요청 개수에 제한이 있는데, 이 제한을 초과하면 요청이 거부되어 사라지거나, 데이터베이스 자체가 비정상 종료될 수 있다.
🎇 데이터베이스 커넥션 풀을 사용함으로써 얻을 수 있는 장점은 무엇인가요?
커넥션 풀은 애플리케이션과 데이터베이스 연결을 미리 생성해두고, 이를 재사용하는 기법을 말한다. 데이터베이스에 접근할 때마다 새로운 연결을 생성하고 종료하는 대신, 미리 준비된 연결을 재사용함으로써 성능을 향상하고 자원 사용을 최적화할 수 있다.
커넥션 풀의 주요 구성 요소는 초기 풀 크기, 최소 풀 크기, 최대 풀 크기, 연결 대기 시간 등이 있고, 이를 통해 커넥션을 효율적으로 관리하고 사용할 수 있다.
그럼 커넥션 풀 사이즈는 클 수록 좋나요? 🤔
커넥션을 사용하는 주채는 스레드이기 때문에, 커넥션과 스레드를 연결 지어 생각해야 한다. 만약 커넥션 풀 사이즈모다 크면, 스레드가 모두 사용하지 못해 리소스 낭비가 된다. 반대로 커넥션 풀 사이즈가 스레드 풀 사이즈 보다 작으면, 스레드가 커넥션이 반환되기를 기다려야 하기 때문에 작업이 지연된다.
커넥션 풀 사이즈와 스레드 풀 사이즈의 균형이 맞더라도, 너무 큰 사이즈로 설정하면, 데이터베이스 서버, 애플리케이션 서버의 메모리와 CPU를 과도하게 사용하게 되므로 성능이 저하된다.
'매일메일' 카테고리의 다른 글
[매일메일 2025-03-06] 데이터베이스 시스템에서 동시성을 제어하는 방법에 대해 설명해주세요. (0) | 2025.03.12 |
---|---|
[매일메일 2025-03-05] HTTP 메서드에서 멱등성이란 무엇인가요? (0) | 2025.03.11 |
[매일메일 2025-02-28] 스레드, 프로세스, 코어의 수는 많을 수록 좋을까요? (0) | 2025.03.10 |
[매일메일 2025-02-27] 단위 테스트와 통합 테스트의 차이점은 무엇인가요? (0) | 2025.03.07 |
[매일메일 2025-02-26] 공유 락과 배타 락에 대해서 설명해주세요. (0) | 2025.03.06 |