0. 이 글을 작성하는 이유
postgresql9.6 성능 이야기책을 읽으면서 조금 부족하다고 생각했던 내용을 정리하려고 한다.
1. WAL Buffer
WAL이란 Write-Ahead Logging의 약자로 데이터 베이스의 변경 사항을 잠시 저장하는 buffer이며 정해진 시점(사용자 custom가능)에 buffer에 있는 내용은 WAL 파일로 기록되어 백업 및 복구에 사용된다.
2. Postmaster Process와 Background Process
Postmaster process는 PostgreSQL을 기동 할 때 가장 먼저 시작되는 프로세스로 초기 기동 시 복구 작업, Shared 메모리 초기화 작업, Background 프로세스 구동 작업을 수행한다. 모든 Background Process는 Postmaster Process의 child process이다.
책에는 이렇게 나온다.
postmaster라는 표현은 없고 postgres daemon이 실행되는 위치를 기준으로 하위에 다른 background process가 달려있다.
우선 나는 맥북을 사용 중이라 pstree가 없어서 설치를 했다.
brew install pstree
그러면 저 PID가 정말 postmaster의 PID가 맞을까에 대해서는 postmaster.pid 파일을 확인해 보면 된다. 관련해서는 이전에 글을 간단하게나마 작성했었다.
postgres가 어느 날 맛이 가버렸다. postmaster는 뭐고 왜 이런 일이 발생했을까 — 흔한 컴공 출신 개발자 (tistory.com)
가장 위에 PID가 적혀있다.
이제 한번 실행해 보자.
logger process가 보이지 않는다. logger process를 사용하기 위해서는 config에서 설정을 풀어주어야 한다.
이제 다시 실행해 보자.
잘 나온다.
3. Database Cluster
이 데이터베이스 클러스터라는 게 약간 이해가 가지 않았다. 그래서 공식문서의 힘을 좀 빌렸다.
기본적으로 database를 초기화할 때(initdb()를 수행할 때) postgres, template1, template0이라는 데이터베이스가 생성되고 이를 다 합쳐서 Database Cluster라고 한다.
저 template database는 뭘까
Database의 생성은 기존 database를 복사하는 방식으로 작동한다.
이런 식으로 template1에 추가하고 사용자 database에 추가된다. template0에는 template1의 초기 데이터가 복사된다.
template1에는 사용자가 필요한 오브젝트를 생성할 수 있다고 하는데 여기서 오브젝트라는 건 테이블, 뷰, 인덱스, 시퀀스, 함수, 데이터 타입, 연산자, 도메인 등을 포함한다.
4. Tablespace
갑자기 Tablespace라고 하길래 뭔지 몰라서 검색을 해봤다.
Database의 실제 오브젝트들의 파일을 저장하는 위치를 저장한다.
조회는 pg_catalog의 pg_database에 존재한다.
'컴퓨터공학 > 데이터베이스' 카테고리의 다른 글
PostgreSQL 9.6 성능 이야기 1장 : 아키텍처 개요 (0) | 2024.03.31 |
---|---|
UUID에 바로 LIKE연산자를 사용하려고 했더니 안되었던 이유는? (1) | 2024.02.04 |
postgres가 어느 날 맛이 가버렸다. postmaster는 뭐고 왜 이런 일이 발생했을까 (0) | 2024.01.20 |
PostgreSQL Materialized View 사용기 (1) | 2024.01.12 |
[PostgreSQL]Table Partitioning (1) | 2023.12.03 |