PostgreSQL 은 postmaster 와 postgres 라고 하는 Server 프로세스를 통해 커넥션을 생성하여 사용자 요청을 받으며 이러한 요청은 백그라운드 프로세스에 의해 처리된다.
postmaster
postmaster는 PostgreSQL 서버를 기동/중지하기 위한 필수 프로세스이자 가장 먼저 시작되는 프로세스이다.
- 공유 메모리 영역 관리 및 백그라운드 프로세스 시작
- postmaster 프로세스는 PostgreSQL 서버의 공유 메모리 영역을 할당하고 관리하며, 여러 백그라운드 프로세스를 시작하는 역할을 수행한다.
- 클라이언트 연결 요청 처리
- postmaster는 클라이언트의 연결 요청을 대기하고 있다가, 클라이언트로부터 연결 요청이 발생하면 이를 처리하기 위해 postgres 프로세스를 생성하여 연결을 관리한다.
- 프로세스 상태 모니터링 및 재기동
- 최상위 프로세스로서 하위 프로세스들의 비정상 작동 여부를 체크하며, 문제가 발생할 경우 서버의 안정성을 유지하기 위해 해당 프로세스를 재기동하는 역할을 수행한다.
Postgres Backend Process
postgres 백엔드 프로세스는 클라이언트와의 개별적인 연결을 관리하고, 각 연결이 종료되면 프로세스도 종료되는 구조이다.
- Client 요청 처리
- postgres 백엔드 프로세스는 클라이언트가 요청한 SQL 쿼리와 명령을 처리한다. 클라이언트와의 연결이 끊어지면 이 프로세스는 자동으로 종료된다.
- postmaster와의 관계
- 이 프로세스는 postmaster 프로세스에 의해 생성되며, 각 클라이언트와 1:1 관계를 가진다. 즉, 클라이언트가 연결을 요청할 때마다 개별 postgres 프로세스가 시작된다.
- 동시 연결 제한
- max_connections 파라미터에 따라 동시 연결 가능한 클라이언트 수가 제한된다. 기본값은 100이며, 이 숫자만큼 클라이언트가 동시에 연결될 수 있다.
Utility Process
BG Writer
WAL Writer
CheckPointer
Archiver
Stats Collector
Autovacuum Launcher
Logger
Memory
References
'클라우드 컴퓨팅 > Database' 카테고리의 다른 글
Postgresql Architecture #1 Client - Server Architecture (0) | 2024.10.20 |
---|