DB별 대기열 관리 비교
MySQL:
- Postgresql과 다르게 기본 옵션이 대기열을 사용하지 않는 On-Demand 방식을 사용합니다.
- 8.0 버전부터 connection pool 기능을 제공하지만, 이는 옵션으로 활성화 가능한 대기열 방식입니다.
On-demand는 요청이 들어왔을 때 새 연결을 실행하여 클라이언트에게 할당합니다.
따라서 지연이 발생할 수 있으며, 요청이 들어올때마다 만드므로 서버 부하가 증가합니다.
connection pool은 미리 생성된 연결을 저장하고 필요에 따라 클라이언트에 할당합니다.
따라서 지연을 줄일 수 있으며, 서버가 동시에 처리할 수 있는 연결 수를 제한하다보니 부하를 줄일 수 있습니다.
PostgreSQL:
- shared buffers라는 미리 초기화된 대기열을 사용합니다.
- 클라이언트가 연결 요청을 하면 대기열에서 사용 가능한 연결을 할당받습니다.
- 대기열은 많은 연결 요청 시 성능을 향상시킬 수 있습니다.
shared buffers는 PostgreSQL 연결을 저장하고 할당하는 역할을 하며 connection pool과 역할이 비슷합니다.
PostgreSQL 서버와 긴밀하게 통합되어 있고 연결관리에 특화되어 있다는 점 때문에 연결 풀보다 성능이 우수할 수 있습니다.
PostgreSQL 서버 메모리 공간의 일부를 사용하여 구현되므로 메모리 관리가 필요합니다.
connection pool은 Mysql에서 연결 관리, 연결 캐싱, 연결 검증, 연결 제한 등 다양한 기능을 위해 사용됩니다.
추가 기능이다보니 개발자가 추가 설정을 해야합니다.
운영 체제 또는 애플리케이션 서버에서 구현되므로 메모리, CPU, 네트워크 등 다양한 관리 포인트가 추가됩니다.
MongoDB:
- 내부적으로 기본 설정인 connection pool을 사용하여 연결을 관리합니다.
- 쿼리 실행 시 연결 풀에서 사용 가능한 연결을 가져옵니다.
shared buffer : https://www.postgresql.org/docs/9.1/runtime-config-resource.html
서버가 커짐에 따라 connection pool 관리를 해줘야하는 이유 : https://www.happykoo.net/@happykoo/posts/133
'Database' 카테고리의 다른 글
MySQL 메모리 영역 (0) | 2024.03.14 |
---|---|
Localhost와 127.0.0.1의 차이 (0) | 2024.03.12 |
MySQL Flush (0) | 2024.03.10 |
MySQL Buffer Pool 조정하기 (0) | 2024.03.09 |
MYSQL slow query 설정 및 확인하기 (0) | 2024.03.08 |