← 질문 목록
#1깊이 0

DB 커넥션을 매번 새로 맺는 비용이 큰 이유는?

데이터베이스기초성능

커넥션 생성은 객체 하나를 만드는 일이 아니다. 네트워크 연결부터 세션 준비까지 여러 단계를 매번 다시 밟는다.

한 번 맺을 때 실제로 오가는 것은 이렇다. 단계마다 왕복이 끼어 있어 밀리초가 쌓인다.

  1. 1. 앱에서 DB로: TCP 연결 요청. 3-way handshake가 먼저 돈다
  2. 2. 앱에서 DB로: 인증 정보 전달. 계정과 권한을 확인한다
  3. 3. DB에서 앱으로: 세션 준비 완료. 내부 자원을 할당한 뒤 응답한다

요청마다 맺고 닫으면 이 비용이 응답 시간에 그대로 실린다. 동시 요청이 몰리면 문제가 커진다. DB가 질의 처리 대신 커넥션 생성과 해제에 CPU와 메모리를 쓰기 때문이다.

connection pool은 두 가지를 한다. 미리 만들어 둔 커넥션을 재사용해 생성 비용을 없앤다. 동시에 DB로 나가는 커넥션 수에 상한을 둬 DB를 보호한다. 뒤쪽이 더 중요하다.

풀 크기는 DB가 감당할 연결 수와 애플리케이션 대기를 함께 보고 정한다. 크게 잡으면 DB 자원을 과점유하고 작게 잡으면 애플리케이션 쪽 대기가 늘어난다는 양면을 함께 말할 수 있어야 한다.

추천 꼬리질문

0/300

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

관련 질문

DB 커넥션을 매번 새로 맺는 비용이 큰 이유는?