-
Connection PoolDB 2025. 3. 16. 21:26
[Connection Pool이 나오게 된 이유]
Connection 객체를 생성하는 작업은 비용이 굉장히 많이 드는 작업이다.

Connection Pool을 사용하지 않는다면 이와 같이 매번 DB와의 TCP/IP 연결을 통해 Connection 객체를 생성해야한다 DB와의 TCP/IP 연결을 맺는 과정이 포함되어 있기 때문이다.
네트워크 레벨에서의 3-way handshake + 인증 + 세션 생성 등의 절차를 포함한 I/O 작업이다.
I/O 작업은 요청 후 응답이 올때까지의 대기 시간이 걸리므로 너무 많은 I/O 작업 시 성능 저하가 존재할 수 있다.
그래서 빈번한 Connection 생성/종료는 큰 부하를 초래할 수 있다.
따라서 Connection 객체들을 미리 일정 갯수만큼 생성해놓고
쿼리를 날리기 위해 Connection 객체들이 필요할때
I/O 작업 없이 기존의 미리 생성해놓은 커넥션 객체들을 활용하는 방식을 사용한다.
→ 어플리케이션이 실행될 때, 설정된 개수만큼 커넥션을 미리 만들어두는 것이다.
[그럼 Connection Pool은 어디에 존재하는 것일까]

Connection Pool을 사용한다면 DB와의 연결 없이 바로 어플리케이션 서버 내 있는 커넥션 풀에서 커넥션 객체를 가져올 수 있다. I/O 작업이 필요없다는 의미에서 굉장히 큰 의미를 가진다. Connection Pool은 어플리케이션 서버에 존재하는 것이다.
DB 서버에 존재하는 것이 아니다!
→ 따라서 커넥션 풀을 사용할 경우, 새로운 Connection 객체를 생성하기 위한 TCP/IP 기반의 I/O 작업은 아예 없어진다.
물론 커넥션을 사용하여 쿼리를 날릴 때는 당연히 DB 서버와의 통신이 이루어진다.
하지만 "커넥션을 얻는 과정" 자체는 단순히 어플리케이션 내부에서 커넥션 객체 하나를 그저 꺼내오기만 하는 작업이 되기 때문이다.
'DB' 카테고리의 다른 글
데이터베이스 저장 구조 (0) 2025.03.15 Nested Loop Join vs Sort Merge Join (0) 2025.02.09 DB 클러스터링 (0) 2025.01.26 트랜잭션 격리수준 (Isolation Level) (0) 2025.01.26 데이터베이스 락 (0) 2024.12.05