← 질문 목록
#208깊이 0

커넥션 풀을 사용하는 이유는 무엇인가?

데이터베이스기초성능확장성

답변 연습

내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요

커넥션 풀은 연결을 재사용하고 데이터베이스로 들어가는 동시 작업 수를 제한한다. 연결 비용을 줄이는 것과 과부하를 막는 것 모두가 목적이다.

  1. 요청→커넥션 풀

    남은 시간 안에서 연결을 빌린다

  2. 커넥션 풀→데이터베이스

    정해 둔 수만 동시에 보낸다

  3. 데이터베이스→요청

    트랜잭션을 끝내고 연결을 반납한다

  4. 커넥션 풀→빠른 실패

    대기 제한을 넘으면 오류를 돌려준다

연결마다 TCP·TLS, 인증과 세션 설정 비용이 들 수 있다. 살아 있는 연결을 빌리면 이 과정을 반복하지 않는다. 다만 풀에 연결이 있다는 이유만으로 느린 질의가 빨라지지는 않는다.

풀을 크게 하면 처리량이 계속 오른다는 보장은 없다. 데이터베이스가 감당할 동시 실행 수를 넘으면 CPU·메모리·잠금과 I/O 경합이 커진다. PostgreSQL도 max_connections를 올릴수록 일부 자원을 더 할당한다.

한 애플리케이션의 크기만 보면 안 된다. 인스턴스 수, 배포 중 겹쳐 뜨는 수, 배치와 운영 도구의 연결까지 더한 최댓값이 데이터베이스 예산 안에 들어가야 한다. 운영자용 예비 연결도 남긴다.

풀 대기 제한은 사용자 요청의 남은 시간보다 짧게 둔다. 오래 기다린 뒤 질의를 시작하면 이미 응답할 시간이 없다. 사용 중·유휴·대기 연결 수, 빌리는 시간과 보유 시간을 보며 부하 시험으로 조정한다.

반납도 계약이다. 트랜잭션을 끝내고 세션 상태를 초기화해야 다음 요청에 설정이나 잠금이 새지 않는다. 누수, 네트워크에서 끊긴 연결과 데이터베이스의 수명 제한도 감지해 교체한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

커넥션 풀을 사용하는 이유는 무엇인가?