본문 바로가기
3. 데이터관리

PostgreSQL Architecture 공유 메모리, 프로세스

by chosuky 2024. 2. 29.

 

PostgreSQL에 대해 알아보기 위해 기본 구조를 파악해야 그 이해가 쉽기 때문에

1편을 통해 공유 메모리와 프로세스에 대해 알아보고

2편에서 데이터베이스 구조에 대해 자세히 살펴보겠습니다.

 

PostgreSQL Architecture 구조는 아래와 같습니다.

 - 공유 메모리 (Shared Memory)

 - 프로세스 (Process)

 - 데이터베이스 (Database)

 

PostgreSQL Architecture

 

1. 공유 메모리 (Shared Memory)

공유 메모리에서 가장 중요한 요소는 Shared Buffer와 WAL Buffer입니다.

 

  ● Shared Buffer는 Disk I/O 최소화를 위해 아래 항목을 만족해야 합니다.

    - 수십, 수백 GB의 버퍼를 빠르게 액세스해야 함

    - 많은 사용자가 동시에 접근할 때 경합을 최소화

    - 자주 사용되는 버퍼는 최대한 오래 버퍼에 머물러야 함

 

  ● WAL Buffer는 데이터베이스의 변경사항을 저장하는 버퍼입니다.

     - WAL Buffer의 내용은 정해진 Event에 따라 WAL 파일로 기록

     - WAL Buffer는 Oracle의 Redo Log Buffer에 대응

     - WAL File은 Oracle의 Redo Log File에 대응

 

2. 프로세스 (Process)

 

  ● Process의 주요 Type 3가지

     - Postmaster (Daemon) process

       ▶PostgreSQL 기동시 최초로 시작되는 프로세스로 초기 기동시 복구 작업

       ▶ Shared Memory 초기화 작업

       ▶ 백그라운드 프로세스 기동 작업

   

     - Background process

         ▶ logger : 에러 메시지 및 다양한 정보를 로그 파일에 기록

         ▶ checkpointer : 체크포인트 발생시, dirty 버퍼를 파일에 기록

         ▶ writer : 주기적으로 dirty 버퍼를 파일에 기록

         ▶ wal writer : WAL 버퍼의 내용을 WAL 파일에 기록

         ▶ autovacuum launcher : Vacuum이 필요한 시점에 autovacuum worker를 fork

         ▶ archiver : Archive Log Mode 일 때, WAL 파일을 지정된 디렉토리에 복사

         ▶ stats collector : DBMS 통계 정보를 수집 (세션 수행 통계, 테이블 사용 통계 등) 

   

     - Backend process

         ▶ Backend process는 사용자 프로세스 쿼리 요청을 수행한 후, 결과를 전송하는 역할 수행

         ▶ 쿼리 수행에 필요한 몇 가지 메모리 구조가 필요하며 이를 로컬 메모리라고 통칭

         ▶  로컬 메모리 주요 파라미터 (work_mem, maintenance_work_mem, temp_buffer 등)

댓글