몽고 db를 사용하는데 connection pool에 대해 이해없이 사용하다가,
런타임 중 예상치 못한 에러를 마주하곤 하는데,
기본적으로 개발자라면 본인이 사용하고 있는 db 에 대한 이해와 이를 제어하기 위해 어떤 설정을 해야하는지는 알고있어야한다.
알아야할 항목으로는 트랜젝션처리, 락처리 등이 될것이고,
또 DBCP라는게 있다.
Database Connection Pool !
백엔드 서버에서는 DB 에 CRUD 작업을 위해서, 작업할 때마다 DB에 연결하고 작업이 끝나면 연결을 끊고 하는 방식으로 세팅되어있지 않다.
왜? 매번 필요할때마다 연결하고 끊게 되면은 그만큼의 지연 시간이 발생하기 때문이다.
이러한 시간은 DB 에 접속명령어를 날려서 접속되고, 접속 종료명령어를 날려서 종료되는 시간과 거의 동일하다.
백엔드에서는 수시로 DB CRUD 작업을 해야하기때문에 다른 페러다임이 적용되어있는게
그게 바로 DBCP 이다.
즉, 미리 연결은 다 해놓고, 이 연결된 pool을 CRUD 작업이 필요할때마다 할당받아서 사용하는 것이다.
다 사용되면 접속을 끊는것이 아니라 사용된 Pool 만 다시 반환한다.
(속도 차이는 매우 크며, 로깅을 남겨서 테스트 해볼수도 있다.)
자, 그럼 몽고 DB 의 default connection pool 은 얼마일까?
몽고 DB에서 제공해주는 size 는 100이다.
다만, 이 값을 백엔드 서버에서 제어가 가능하다.)
(왜냐고? 사용되는 쪽이 벡엔드니깐)
자세한 사항은 공식 문서 참고해 보기 바란다.
https://www.mongodb.com/ko-kr/docs/manual/tutorial/connection-pool-performance-tuning/
연결 풀 설정 조정 - MongoDB 매뉴얼 v8.0
데이터베이스의 로드가 적고 항상 활성 연결 수가 적으며, 애플리케이션이 항상 한 번에 예상보다 적은 수의 작업을 수행함
www.mongodb.com
'nosql > mongodb' 카테고리의 다른 글
mongodb 에서 data 한꺼번에 삭제하는 법 (0) | 2025.01.08 |
---|