[PostgreSQL 9.6 성능이야기] 편,
스리슬쩍 공부한다꼬 책 보면서 요약하기 위한 게시글
내용에 틀린 부분이 있을 수 있음!
PostgreSQL 물리적 구조는 단순
- Shared Memory
ㄴ Shared Buffer
ㄴ WAL Buffer
- process
- data file
4 Process
- Postmaster Process (Daemon)
- Background Process
- Backend Process
- Client Process
ㄴ Backend Process 는 사용자 프로세스의 쿼리 요청을 수행 및 결과를 전송하는 역할을 수행하며
work_mem, maintenance_work_mem, temp_buffers 등등의 파라미터 수치를 조정하여 퍼포먼스를 향상시킬 수 있다.
테이블 별로 3개의 파일이 존재한다
OID = 데이터 저장을 위한 파일
OID_fsm = 테이블 여유 공간 관리를 위한 파일
OID_vm = 테이블 블록과 visibility를 관리하기 위한 파일 (인덱스는 해당 파일 없음)
"OID"
테이블과 인덱스 생성 시점의 파일명은 OID 와 동일하다
이 시점에 OID와 pg_class.relfilenode의 값과 같지만 rewrite 작업 등의 영향으로 오브젝트의 relfilenode 값이 변경되고 파일명 또한 relfilenode 값으로 변경된다.
pg_relation_filepath('오브젝트명') 명령어를 이용하면 파일 위치와 이름을 확인할 수 있다.
ORACLE 과 PostgreSQL의 차이점
ORACLE | PostgreSQL | |
MVCC 모델 구현 방식 | UNDO 세그먼트 | 블록 내에 이전 레코드 저장 |
Shared Pool 존재여부 | 존재 | 존재하지 않음 |
todo
- shared pool
댓글