ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DataBase] 커넥션 풀(Connection Pool)을 사용하는 이유
    Backend/DataBase 2022. 6. 17. 01:21
    728x90

    커넥션 풀(Connection Pool)이란 무엇이고, 사용하는 이유는 무엇인지 알아보자.

     

    우선 커넥션(Connection)을 알아봐야한다.

     

    커넥션(Connection)이란 DB Connection을 의미하는데, 데이터베이스를 사용하기위한 연결을 의미한다.

    그런데 이 커넥션을 획득해오는 것이 조금 복잡한데, 쉽게 설명하면 DB에 접속해서 아이디와 패스워드를 통해 인증하여 DB가 사용가능한 상태가 커넥션을 얻어오는 것이라고 생각하면 되겠다.

     

    바로 위에서 커넥션을 획득하는 것은 복잡한 일이라고 했다.

     

    그런데 추상화된 JdbcTemplate이나 JPA가 아닌 순수 JDBC를 통해 DB 접근하는 코드를 작성해 본 적이 있다면 어떤 작업을 할 때마다 직접 커넥션을 생성하고 획득한 후 SQL을 날릴 수 있다는 것을 알 것이다.

     

    DB 접근을 수 없이 할텐데 이러한 방식은 너무나도 비효율적이다.

     

    그래서 이러한 문제를 해결하기 위해 사용하는 것이 커넥션 풀(Connection Pool)이다.

     

    커넥션 풀(Connection Pool)이란 정해둔 크기만큼 커넥션을 미리 얻어와서 풀에 보관하는 것을 말한다.

    커넥션 풀의 커넥션은 사용하고 반납하도록 되어있다.

     

    이렇게 커넥션 풀을 사용하면 언제든지 즉시 SQL을 DB에 전달할 수 있게된다.

    웹 애플리케이션 서버를 시작할 때는 시간이 조금 걸리지만 ( 사실 스프링의 경우는 기본적으로 Hikari CP를 사용하는데 별도의 쓰레드를 통해 커넥션을 얻어와서 채우기 때문에 실행시간에 영향을 거의 주지 않는다. ) 그 후 작업을 할 때는 상대적으로 시간이 오래걸리는 커넥션을 생성하는 과정이 빠지면서 훨씬 효율적이게 된다.

     

     

     

    - 참고 -

    스프링 DB 1편 - 데이터 접근 핵심 원리

    https://www.youtube.com/watch?v=NMt9wgRsnjw 

    728x90

    'Backend > DataBase' 카테고리의 다른 글

    [DataBase] JPA에서 인덱스 사용하기 (Mysql)  (0) 2022.07.07
Designed by Tistory.