node.js로 백엔드 개발을 수행하는 데에 데이터베이스로 PostgreSQL를 사용하고 있는데,
데이터베이스에 연결하는 connection을 API 내부에서 실행하는 것은 굉장히 비효율적입니다.
그래서 connection pool이라는 개념이 나왔습니다.
기본적으로 다른 장치와의 연결(특히 보조저장장치)은 속도가 느릴 수 밖에 없습니다. (낮은 기준의 클럭사이클에 맞춰야하기 때문)
이러한 부분에서 발생하는 오버헤드를 상당히 줄일 수 있다는 점
connection의 개수가 필요 이상으로 늘어나지 않도록, 연결의 최대 개수를 제한할 수 있다는 점
이러한 장점들이 있는데, 사용법에 따라 잘 사용하고 있는가?
와 같이 실행하고, 5회 측정한 시간은
대략적으로 37ms 정도의 레이턴시가 나옵니다.
connection pool로 생성하고 server.js(혹은 index.js)에서 선언하고 라우터 파일로 넘기는 경우 => 서버 실행동안 Pool 선언을 한번만 수행함
대략 5~6ms의 레이턴시가 발생합니다.
Router 내부에서 connection Pool를 선언함. 이후 선언코드를 다시 마주치더라도, connection pool 자체는 서버에 할당된 개수가 정해져 있기 때문에 추가적인 시간이 발생하지는 않을 것으로 예상
대략 5~6ms의 레이턴시가 발생합니다.
비슷한 수준의 레이턴시입니다.
Pool 쓰면 확실히 더 빠름.
선언을 어디서 하던 connection 자체는 개수를 정해서 미리 해놨음. => 커넥션을 미리 개수만큼 해놓고 웹 서버에 할당해놨기 때문에, 커넥션으로 인한 레이턴시는 어차피 발생하지 않음.