PostgreSQL & EPAS Architecture - 2.Memory
Overall
PostgreSQL & EPAS 서버에서 사용하는 메모리 구조는 크게 2가지로 분류할 수 있다.
1.Shared Memory
- PostgreSQL Server 내 모든 프로세스들이 사용하는 공유 메모리 영역
2.Local Memory
- Postmaster에서 생성한 backend process(세션) 마다 할당되는 메모리
Shared Memory
Shared buffers
- 데이터에 대한 Select, DML을 수행하기 위해 디스크 영역에 있는 Data를 캐싱하는 메모리 공간
- 실제 메모리의 25%를 할당하여 사용하는 것으로 권장
- 페이지 교체 알고리즘으로 Clock Sweep 알고리즘을 사용
WAL buffers
- ACID(그중 A,D)를 보장하기 위한 Write ahed loging을 위한 영역으로 트랜잭션에 대한 변경 내역을 캐싱하는 메모리 공간
- WalWriter에 의해 디스크(Wal File)로 flush 되며 해당 WAL 파일은 복구 목적으로 사용됨
- 일반적으로 Shared Buffers의 3% 를 할당\
CLOG buffers
- 트랜잭션 상태를 보관하는 메모리 공간
- IN_PROGRESS, COMMITTED, ABORTED, SUB_COMMITTED 상태가 나타나며 체크포인트가 수행될 때 pg_xact 디렉토리에 Flush
- 트랜잭션의 커밋정보를 활용해 MVCC에서 불필요한 Disk Read를 방지하고자 사용 됨
Lock Space
- Lock과 관련된 정보를 보관하는 메모리 공간
- 모든 서버 프로세스는 해당 정보를 공유
- 파티션 테이블을 조회할 때 다량의 Lock이 발생할 수 있으므로 max_locks_per_transaction의 조정이 필요할 수 있음
Other Buffers
- 통계정보 Buffers
- Two Phase commit 관련 Buffers
- checkpointer 및 autovacuum과 같은 다양한 백그라운드 프로세스를 위한 Buffers 등등이 존재
Local Memory
Maintenace_work_mem
- 다양한 작업에 사용 되는 메모리 공간으로 기본값은 64MB이고, work_mem의 1.5배를 권장
- Vacuum 작업, 인덱스 생성 작업에 사용
- 해당 작업을 수행 할 때는 각 세션 마다 set maintenance_work_mem = '1GB'; 등과 같이 설정하여 수행
temp_buffers
- 세션 단위로 임시 테이블에 접근하기 위해 사용하는 메모리 공간으로 기본값은 8MB
work_mem
- 정렬 작업(Order by, Group by, DISTINCT), 조인 작업(Merge)시 사용하는 메모리 공간으로 기본값은 4MB
- (실제 메모리 - Shared Buffers ) / Max_connections로 계산하여 할당하여 사용하는 것으로 권장
- work_mem가 부족할 경우 디스크 영역(Temp 파일) 사용
catalog_cache
- pg_catalog 스키마 내부의 메타데이터를 이용할 때 사용하는 메모리 공간
- 모든 세션에서 메타데이터를 조회할 수 있으므로 각 세션마다 메모리를 해둠
Optimizer / executor
- 쿼리 수행을 위한 실행계획 및 직접적인 실행시 사용하는 메모리 공간
(그림 출처 및 참고 자료)
https://www.interdb.jp/pg/pgsql02.html
https://exem.tistory.com/1645?category=1010730
postgresql.org
enterprisedb.com
모든 포스팅은 공식사이트 및 위 Facebook PostgreSQL Korea 그룹 관리자 페이지에서 공유 된 Google Docs에 있는 서버 관리자 지침서(https://bit.ly/3wsxU43) 를 참고하여 작성되었습니다.
'PostgreSQL & EPAS' 카테고리의 다른 글
PostgreSQL Manual Vacuum Tuning (0) | 2022.06.21 |
---|---|
PostgreSQL 백업/복구 제약사항 검토(EPAS와 비교하여) (0) | 2022.05.28 |
PostgreSQL & EPAS Client tool - psql 활용 (0) | 2022.05.28 |
PostgreSQL & EPAS System Architecture - 1. Process (0) | 2022.05.28 |
PostgreSQL & EDB PAS 란? (1) | 2022.05.28 |