IT/PostgreSQL

[PostgreSQL] PostgreSQL이란?

자연산 금붕어 2025. 2. 21. 14:30

[PostgreSQL이란?]

  • PostgreSQL은 오픈 소스 객체-관계형 데이터베이스 시스템(ORDBMS)으로, Enterprise급 DBMS의 기능과 차세대 DBMS에서나 볼 수 있을 법한 기능들을 제공한다.

 

[PostgreSQL 장단점]

  • 장점 :
    • 무료
    • 확장성이 좋음
    • ANSI SQL 지원
    • ACID를 모두 지원하여 높은 안정성
    • 다중버전 동시정 제어 제공 (MVCC)
  • 단점 :
    • UPDATE 쿼리에 약함
    • 메모리 성능이 떨어짐

 

[PostgreSQL 구조]

  • 클라이언트/서버 모델을 사용
  • SQL(Structured Query Language)을 사용하여 데이터를 관리
  • 관계형 데이터베이스 모델을 따름
  • 다양한 데이터 유형을 지원, 사용자가 사용자 정의 데이터 유형을 생성할 수 있음

※ PostgreSQL Instance Archiecture

- Postgres (= Postmaster)

  • DB 클러스터의 모든 연결 및 작업을 관리
  • Background Process에 Shared Memory 영역을 할당
  • 요청 수신 시 Backend Process를 Client와 1:1로 생성
  • 하위 Process들의 비정상 작동유무를 체크, 문제 발생 시 재기동
  • Client가 요청한 SQL 및 Commend를 처리
  • 각 Component는 Catalog, Rule, Table을 공유
  • max_connection(Default:100) 수 만큼 Client 동시 연결 가능

 

- Shared Memory Area

  • Shared Buffer (≒ Database Buffer with Oracle)
    • Data와 Data의 변경 사항을 Block 단위로 캐싱하여 I/O를 빠르게 처리하기 위한 영역
    • Shared Buffer에 기록되는 단위는 block_size (Default: 8K)
    • shared_buffer (Default: 128MB)로 크기를 설정할 수 있으며, 시스템 메모리의 25% 권장
  • WAL Buffer (≒ RedoLog Buffer with Oracle)
    • Session들이 수행하는 트랜잭션에 대한 변경 로그를 캐싱하는 공간
    • 복구 작업 시 Data를 재구성할 수 있도록 하는 영역
  • CLOG Buffer
    • 각 트랜잭션의 상태 정보를 캐싱하는 공간
    • 모든 트랜잭션의 상태가 있으며 완료 여부를확인할 수 있도록 하는 영역
    • Database 엔진에 의해 자동 관리되며, 설정할 수 있는 Parameter 없음
  • Lock Space
    • PostgreSQL 인스턴스에서 사용하는 모든 유형의 Lock 정보를 저장
    • DB의 동시성 제어 및 일관성을 유지하는 역할

 

- Local Memory Area(= Per Backend Memory)

  • Maintenance Work Memory
    • 유지 관리 작업에 사용되는 메모리
    • Vacuum, Analyze, 인덱스 생성 및 변경, 테이블 변경, FK 추가 등의 작업에 사용됨
    • maintenace_work_mem (Default: 64MB)
  • Temp Buffer
    • Tempoary Table에 사용되는 공간
    • Temp Table을 사용하는 경우에만 할당되며, 각 Session별로 관리
    • temp_buffer (Default: 8MB)
  • Work Memory
    • 과도한 Sork/Hash 작업이 발생하여 Temp file 사용 전 사용 되는 공간
    • work_mem (Default: 4MB)
  • Catalog Cache
    • System Catalog Meta Data를 이용할 때 사용하는 공간
  • Optimizer / Excutor
    • Query에 대한 최적의 실행 계획을 수립하고, 실행 계획에 따른 실행을 담당하는 영역

 

- Background Process (= Utility Processes)

  • BG Writer
    • Shared Buffer의 Dirty Block을 Data File에 기록
    • BG Writer는 bgwriter_delay(Default: 200ms) 주기로 최대 bgwriter_lru_maxpages(Default: 100pages)를 디스크에 기록
  • Check Pointer
    • PostgreSQL Server 다운 또는 충돌 등의 문제가 발생했을 때 마지막 *Check Point 레코드를 확인하여 복구를 시작
  • WAL Writer
    • WAL Buffer를 주기적으로 확인하여 기록되지 않은 모든 트랜잭션 레코드를 디스크(WAL File)에 기록
    • WAL Writer는 트랜잭션 Commit 혹은 Log File 공간이 모두 찼을 때 WAL Buffer를 디스크에 내려씀
    • WAL File은 DB 복구에 사용
    • WAL의 핵심 개념은 데이터 파일의 수정이 트랜잭션 로그에 기록된 후에 이루어져야 함
  • Archiver
    • 다 쓴 WAL File을 Archiving 하는 프로세스 (WAL 세그먼트가 전환될 때 WAL 파일을 Archive영역으로 복사)
    • archive_command로 Archive 경로를 설정하며, scp 명령 또는 백업 도구를 설정하여 다른 호스트로 전송 가능
    • Archive File은 PITR(Point In Time Recovery) 복원에 사용
  • Logger
    • Utility Process, Backend Process, Postgres Daemon 활동에 대한 정보를 기록
  • Stats Collector
    • DB 통계 정보 수집 프로세스
    • Session 정보(pg_stat_activity)와 테이블 통계정보(pg_stat_all_tables)와 같은 DBMS 사용 통계를 수집하여 pg_catalog에 정보를 업데이트
    • Optimizer는 해당 정보를 참조하여 최적의 Query 실행 계획을 생성
  • Autovacuum Launcher
    • Autovacuum을 수행하고 관리하는 프로세스
    • Autovacuum Workers라는 여러 Process로 구성된 Daemon Process
    • Autovacuum Launcher는 Autovacuum Workers를 주기적으로 호출하여 vacuum 및 vacuum analyze를 실행
    • autovacuum_naptime (Default: 60s)마다 Autovacuum Launcher가 DB를 확인하여 autovacuum_max_workers (Default: 3)의 Autovacuum Workers를 호출
  • WAL Sender
    • Master(Primary 서버)에서 실행되는 WAL 송신 프로세스
  • WAL Receiver
    • Standby에서 실행되는 WAL 수신 프로세스

 

※ PostgreSQL Logical Structure

 

 PostgreSQL Physical Structure

 

반응형

'IT > PostgreSQL' 카테고리의 다른 글

[ PostgreSQL ] PostgreSQL 설치  (0) 2025.02.28
[PostgreSQL] VACUUM이란?  (0) 2025.02.28
[PostgreSQL] MVCC란?  (0) 2025.02.28