🌿 중급 DB
데이터베이스 풀링이란?
쉽게 이해하기
매번 식당에 갈 때마다 새로 예약하는 것보다, 단골 테이블을 유지하는 게 더 빠른 것처럼요. 데이터베이스 연결도 매번 새로 만들면 시간이 오래 걸리기 때문에, 미리 여러 개를 만들어두고 필요할 때 빌려 쓰는 방식이에요.
핵심 정리
데이터베이스 연결을 미리 만들어두고 재사용하는 기법이에요.
자세히 알아보기
데이터베이스 커넥션 풀링(Connection Pooling)은 데이터베이스 연결을 미리 일정 개수만큼 생성해두고, 필요할 때마다 가져다 쓰고 반납하는 방식이에요.
데이터베이스 연결을 새로 만드는 작업은 생각보다 비용이 많이 들어요. TCP 연결, 인증, 세션 설정 등의 과정을 거쳐야 하거든요. 만약 요청이 올 때마다 새 연결을 만든다면 서버 성능이 크게 떨어질 수 있어요.
실무에서는 거의 모든 백엔드 애플리케이션에서 커넥션 풀을 사용해요. Express.js에서 MySQL을 쓴다면 mysql2 패키지의 createPool() 함수를, PostgreSQL이라면 pg 패키지의 Pool 클래스를 사용해요. 풀 크기는 보통 10~20개 정도로 설정하지만, 서버 성능과 동시 접속자 수에 따라 조정해야 해요.
풀 크기가 너무 작으면 요청이 대기하게 되고, 너무 크면 데이터베이스 서버에 부담이 됩니다. 적절한 크기를 찾는 게 중요해요. 모니터링을 통해 풀 사용률을 확인하고, 필요하면 조정하는 것이 좋아요.