백엔드 서버에서 DB 서버로 연결을 보내는 방식은 크게
- 매번 DB서버에 연결하여 요청을 보내고 연결을 종료한다.
- connection pool을 이용한다.
이렇게 나누어진다.
먼저 첫번째를 살펴보면
Connection
백엔드 서버에서 쿼리를 전송하기 위해서 DB서버에 연결을 해야하는데, 이때 TCP/IP 연결(3 way handshake)를 해준다. 이렇게 백엔드 서버와 DB서버가 연결 되었다면 백엔드 서버에서 쿼리를 전송하고 DB서버에서 응답하고, 연결을 종료한다.
이것이 기본적인 백엔드 서버와 DB서버 간의 통신이다.
하지만 이 방식의 경우에는 여러 단점이 존재한다.
- 매번 쿼리를 전송할때마다 connection을 다시 맺어야 함으로 시간적인 손실이 발생한다.
- 매번 connection을 realse 해주지 않으면 커넥션이 계속 싸여 메모리에 부하를 일으킨다.
이러한 단점들을 해결하기 위해 사용하는 것이 connection pool이다.
Connection Pool
DBCP(DB connection pool)는 백엔드 서버에서 미리 DB서버와 연결을 해두어 pool에 저장해 둔다. 때문에, DB서버에 쿼리를 보낼때 마다 연결을 다시 할 필요가 사라지게 됨으로 시간적인 손실이 발생하지 않는다. 또한 사용을 마치고 나면 연결을 종료하는 것이 아니라 pool에 다시 반환하여 재사용 한다. 따라서 새로운 연결을 생성한다고 시간을 낭비할 필요가 없어진다.
https://www.youtube.com/watch?v=zowzVqx3MQ4&t=214s
https://bitkunst.tistory.com/entry/Nodejs-MySQL-5-%EC%BB%A4%EB%84%A5%EC%85%98-%ED%92%80-Connection-Pool
'computer science > DB' 카테고리의 다른 글
[데이터 중심 애플리케이션 설계] 7장. Write에서의 동시성 문제 (0) | 2024.07.14 |
---|---|
[데이터 중심 애플리케이션 설계] 7장. Isolation Level (0) | 2024.06.30 |
하나의 트랙잭션에서 insert 다음에 나오는 select 쿼리는 insert된 결과를 가지고 있을까? (0) | 2024.06.23 |
[데이터 중심 애플리케이션 설계] ACID에서 애플케이션과 DB의 책임 분리 (1) | 2024.06.23 |
#1 Redis type (0) | 2024.03.04 |