HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/데이터베이스(Database)/
Database
Database
/
📶
Single Connection vs Connection Pooling
📶

Single Connection vs Connection Pooling

Connection Pool vs Single Connection

https://devdotcode.com/connection-pooling-vs-single-connection/

Single Connection

  • query를 실행하기 위해 공유된 하나의 connection만을 사용하는 것 ← application의 유저 수가 제한되어 있고 쿼리가 간단할 때 사용
  • 쿼리가 실행되고 난 후 커넥션이 종료가 됨. 그리고 새로운 쿼리를 실행하기 위해 새 커넥션을 만들어야 하는데 이러한 커넥션을 열고 닫고 하는 과정은 application의 성능을 안좋게 할 수 있음
  • Single Connection의 가장 큰 이슈는 커넥션이 갑자기 닫혔는데 application에서 이를 모르고 있을 때임

Connection Pooling

  • Connection Pooling은 쿼리 실행의 성능을 향상시키기 위해 사용됨 (커넥션을 자주 열고 닫고 하는 것을 방지함으로써. 그리고 새 커넥션의 수를 줄임으로써)
  • Connection Pooling에서는 active connection(사용중)과 available connection(대기 중)이 가능함
  • 미리 connection을 만들어 놓음으로 유저가 새로운 커넥션을 만들기 위해 대기하는 시간을 줄일 수 있는 것임!
notion image

결론

  • 아래 3가지 사항에 따라 Connection Pooling이 나을 수도, Single Connection이 나을 수도 있음
    • application의 타입
    • 동시 접속 user 수
    • query의 복잡도
 

Connection Pool을 이용하지 않을 때 생기는 단점

네트워크 관점

  • DBMS와의 통신은 TCP/IP로 이루어지고 매 Connection마다 TCP/IP의 3-way handshake(연결 맺기)와 4-way handshake(연결 끊기)를 반복하게 됨
    • 위의 모든 요청은 실제 물리적 회선을 거쳐 이루어지기에 계속 반복하면 비효율적

DBMS 관점(오라클)

  • 오라클과 클라이언트의 연결 과정
      1. 오라클 리스너 시작( LISTEN 상태)
      1. 애플리케이션에서 커넥션 시도
        1. 리스너와 클라이언트 사이에 소켓 생성
      1. 서버 프로세스의 생성
        1. 서버 프로세스를 생성하여 SQL 처리를 즉시 인계
  • 연결마다 서버 프로세스를 생성하기 때문에 Connection을 연결하고 버리고 연결하고 버리고 하면 프로세스 생성, 종료를 반복하는 것이기 때문에 무거움
 

요약

  • handshake 비용
  • 프로세스나 스레드 생성/삭제 비용