본문 바로가기
PostgreSQL

[PostgeSql] PostgreSql 구조

by Ssun's 2021. 9. 29.

Postgresql 

 - 오픈 소스 객체-관계형 데이터베이스 관리 시스템(ORDBMS)의 하나로서 다른 관계형 데이터베이스 시스템과 달리 

   연산자, 복합 자료형, 집계 함수, 자료형 변환자, 확장 기능 등 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 

   있는 기능을 제공함

 

1. PostgreSql vs Oracle 비교

   - db엔진이 올라간 후, 인스턴스를 생성하면서 database가 생성되어 대부분 1 instance = 1 database를 나타내는

      오라클과 달리 postgresql에서의 인스턴스는 1 instance = 1 server를 의미하는 서버 단위의 개념

   - oracle에서의 클러스터는 RAC 환경의 공유노드 개념으로 하나의 스토리지를 바라보는 여러대의 노드,

      오라클 클러스터웨어인 grid instructure를 통함 active-active의 환경을 조성하고 클러슽터웨어를 통해 이루어진

      공유 노드를 클러스터라고 하지만

      postgresql에서의 클러스터는 psql DB 집합체를 의미함. 처음 postgresql 설치 시 기본적으로 postgres database, 

      template0, template 3개의 database가 생성되는데 이 db 집합체를 postgresql 클러스터라고 한다.

      (template database는 밑의 접은글로 설명)

PostgreSql Cluster Structure

 - postgresql의 database는 여러개의 schema로 구성되어 있으며 schema는 object들의 논리적 집합을 의미

 - postgresql schema는 tables, views, sequences, synonyms, domains, functions등의 object로 구성되며 이러한

   database와 users/groups와 tablespaces가 모여 cluster를 구성

더보기

※ Template 데이터베이스

 - PostgreSQL에서 "Create Database"로  테이블을 생성할 때, 기본으로 생성되어 있는 Template1 Database를 복사하여 생성한다. 즉, Template Database는 표준 시스템 데이터베이스로 원본 데이터베이스에 해당하는데 template1에서 프로시저언어 PL/Perl을 설치하는 경우 해당 데이터베이스를 생성할 때 추가적인 작업 없이 사용자 데이터베이스가 자동으로 사용 가능

PostgresQL에는 Template0라는 2차 표준 시스템 데이터베이스가 있는데, 이 데이터베이스에는 template1의 초기 내용과 동일한 데이터가 포함되어 있다. Template 0은 수정하지 않고 원본 그대로 유지하여 무수정 상태의 데이터베이스를 생성할 수 있으며, pg_dump 덤프를 복원할 때 유용하게 사용할 수 있다.


 

 

2. postgresql database structure

 - PostgreSql은 클라이언트/서버 모델을 사용

 - 서버는 데이터베이스 파일들을 관리하며, 클라이언트 애플리케이션으로부터 들어오는 연결을 수용하고, 클라이언트를

   대신하여 데이터베이스 액션을 수행한다.

 - 서버는 다중 클라이언트 연결을 처리할 수 있는데, 서버는 클라이언트의 연결 요청이 오면 각 커넥션에 대해 새로운 

   프로세스를 fork하고 클라이언트는 기존 서버와의 간섭없이 새로 생성된 서버 프로세스와 통신하게 된다.

 1) Shared Memory

   - Shared Buffer : Disk I/O를 최소화하는 것이 목적. 그를 위해 매우 큰 버퍼를 빠르게 액세스 해야하고, 다수의 

                         사용자가 동시에 접근할 때 경합을 최소화해야 하며, 자주 사용되는 블록은 최대한 오랫동안 버퍼

                         내에 있어야 함 

   - WAL Buffer : 데이터베이스의 변경사항을 잠시 저장하는 버퍼로 wal 버퍼 내에 저장된 내용은 정해진 시점에 

                       wal 파일로 기록. 백업 및 복구 관점에서 wal파일은 매우 중요하고, 오라클에서 Redo의 개념과 비슷

 

 2) 프로세스 유형

   - Postmaster 프로세스

     : PostgreSQL를 구동 할 때 가장 먼저 시작되는 프로세스

     : 초기 기동시 복구 작업, Shared Memory 초기화 작업, 백그라운드 프로세스 구동작업을 수행

     : 클라이언트 프로세스의 접속 요청이 있을 때 Backend 프로세스를 생성

 

   - Background 프로세스 

     : Autovacuum launcher를 제외하면, 오라클과 비슷한 백그라운드 프로세스들이 존

  • logger : 에러메세지를 로그 파일에 기록한다.
  • checkpointer : 체크포인트 발생시, dirty 버퍼를 파일에 기록한다.
  •  writer : 주기적으로 dirty 버퍼를 파일에 기록한다.
  •  wal writer : WAL버퍼 내용을 WAL 파일에 기록한다.
  •  autovacuum launcher : Vacuum이 필요한 시점에 autovacuum worker를 fork 한다.
  •  archiver : Archive Log 모드일 때, WAL 파일을 지정된 디렉토리에 복사한다.
  •  stats collector : 세션 수행 정보 (pg_stat_activity)와 테이블 사용 통계 정보 (pg_stat_all_tables)와 같은 DBMS                                사용 통계 정보를 수집한다.

   - Backend 프로세스
     : Backend 프로세스의 최대 개수는 max_connections 파라미터로 설정 가능하며, 기본값은 100

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

     : 쿼리 수행에 몇가지 메모리 구조가 필요한데, 이 것을 통칭해서 로컬 메모리라고 함

     : 로컬 메모리 관련 주요 파라미터

  • work_mem 파라미터 : 정렬 작업, Bitmap 작업, 해시 조인과 Merge조인 작업시에 사용되는 공간. 기본값은 4MB
  • maintenance_work_mem 파라미터 : Vacuum 및 create index 작업 시에 사용되는 공간. 기본값은 64MB
  • temp_buffers 파라미터 : Temporary 테이블을 저장하기 위한 공간. 기본값은 8MB



 

 

참고 글 : https://kwomy.tistory.com/7?category=851266 , https://mangkyu.tistory.com/71

 

[PostgreSQL] PostgreSQL이란?

이번에는 오픈소스 객체-관계형 데이터베이스 시스템인 PostgreSQL에 대해서 알아보도록 하겠습니다. 1. PostgreSQL이란? [ PostgreSQL이란? ] PostgreSQL은 오픈 소스 객체-관계형 데이터베이스 시스템(ORDBMS)

mangkyu.tistory.com

 

[PostgreSQL] 디렉토리 구조 및 환경 변수 파일

postgresql를 설치하고나면 다음과 같은 구조가 생성된다. [표]POSTGRESQL 엔진 디렉토리 구조 directory contents bin postgreSQL(DB)에서 사용하는 실행파일 위치 data db의 data directory doc documentation..

kwomy.tistory.com

 

 

 

 

반응형

'PostgreSQL' 카테고리의 다른 글

[PostgreSQL] Sequence 권한  (0) 2021.11.17
[PostgreSQL] psql 옵션  (0) 2021.11.02
[PostgreSQL] DB에서 서버의 file 조회, 읽기  (0) 2021.05.25
[PostgreSQL] postgres_fdw  (0) 2021.05.24
[PostgreSQL] DB링크(dblink)  (0) 2021.05.17

댓글