티스토리 뷰

데이터베이스 커넥션

  • 애플리케이션과 데이터베이스의 연결을 뜻함
  • 애플리케이션에서 데이터베이스에 접속하고 접속을 종료하는 일련의 과정을 의미.

풀(Pool)

  • 필요할 때마다 개체를 할당하고 파괴하는 대신, 사용 준비된 상태로 초기화된 개체 집합
    • 즉, 데이터베이스 커넥션 풀은 커넥션(개체)을 미리 생성해 사용 준비된 상태로 초기화된 커넥션 집합

자바의 Connection 인터페이스

java.sql 패키지에 정의된 Connection 인터페이스에는 다음과 같이 설명한다.

A connection (session) with a specific database.
SQL statements are executed and results are returned within the context of a connection.

특정 데이터베이스와의 연결(세션)입니다. SQL 문이 실행되고 연결 컨텍스트 내에서 결과가 반환됩니다.

Connection 인터페이스에 대한 좀 더 자세한 정보는 아래 자료를 참고하기 바란다.

 

데이터베이스 커넥션 풀, DBCP(DataBase Connection Pool)

  • 클라이언트의 요청에 따라 각 스레드에서 데이터베이스에 접근하려면 Connection이 필요, 이때 미리 데이터베이스와 커넥션을 맺어놓는 것.
  • 미리 커넥션의 개수를 확보해 둔 뒤 이 커넥션을 애플리케이션에서 사용하고 반환하는 형태

출처 : https://www.happykoo.net/@happykoo/posts/133

사용하는 이유

  • DB 커넥션 비용 절감
    • Pool 속에 미리 Connection이 생성되어 있기 때문에 Connection을 생성하고 닫는데 시간이 소비되지 않는다.
    • Connection을 계속해서 재사용하기 때문에 Connection의 수가 많이 필요하지 않다.
  • 안정적인 DB 커넥션 유지
    • 커넥션 수를 제어하기 때문에 동시 접속자 수가 몰려도 애플리케이션이 쉽게 다운되지 않는다.

Thread Pool과 Connection Pool

Connection Pool과 비슷한 맥락으로 Thread Pool이라는 개념이 있다.

 

  • WAS에서 Thread pool과 Connection pool내의 Thread와 Connection의 수는 직접적으로 메모리와 관련이 때문에, 많이 사용하면 할수록 메모리를 많이 점유하게 된다.
    • 그렇다고 반대로 메모리를 위해 적게 지정한다면, 서버에서는 많은 요청을 처리하지 못하고 대기할 수밖에 없다.
  • 보통 WAS의 Thread의 수가 Conncetion의 수보다 많은 것이 좋다. 모든 요청이 DB에 접근하는 작업이 아니기 때문이다.

새롭게 궁금해진 점

참조 자료

'CS > DB' 카테고리의 다른 글

데이터베이스 인덱스  (0) 2022.10.28
DB의 Lock  (0) 2022.10.08
트랜잭션 (Transaction)  (0) 2022.10.08
MySQL 아키텍처  (0) 2022.08.04
조인 수행 원리  (0) 2022.08.02
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday