Postgresql Memory 는 어떻게 구성되어 있는지 알아보자
아래는 Postgresql 의 메모리 구조이다.

크게 보면 오라클의 SGA 처럼 인스턴스 전체에서 공유해서 사용하는 Share memory 와 각 backend 프로세스가
독립적으로 사용하는 local memory , 그리고 OS cache 가 있다.
1. shared memory
- shared buffers : 디스크에서 읽은 데이터블록을 캐싱하는데 사용되는 메모리
디폴트 : {DBInstanceClassMemory / 32768}
m타입 2xlarge 의 경우 => 32GB / 32768 = 1,049,088 개의 블록을 사용
실제 메모리 할당값은 1,049,088 * 8k = 8,392,704KB≈8GB
- wal buffers : 디스크에 쓰기전에 WAL 레코드를 보관하는데 사용되는 메모리
이값이 2048 이면 2048 개의 8k block 을 사용한다는 의미.
실제 할당값은 2048 * 8k = 16MB
- clog buffers : 트랜잭션의 커밋/롤백 상태를 추적하는 내부 시스템 캐시 , 설정불가
* 오라클과 다르게 postgresql에서는 트랜잭션과 별도로 커밋상태를 관리하는 버퍼가 존재한다.
* shared memory 는 보통 전체 인스턴스 메모리의 1/4 정도를 할당한다.
2. Local memory (per backend)
work_mem : 임시 디스크파일을 사용하기 전에 정렬 및 해시 작업에 사용.
temp buffers : 세션별 임시 테이블 데이터를 위한 버퍼
maintenance_work_mem : vacuum, create index 등 유지관리 작업에서 사용하는 최대 메모리
* 세션단위 설정 : show maintenance_work_mem;
set maintenance_work_mem ='1024MB';
3. OS free memory
effective_cache_size : 쿼리 플래너에게 운영체제와 postgresql 이 사용할수있는 디스크 캐시의 총량 추정치
{DBInstanceClassMemory / 16384}
'생계 > PostgreSQL' 카테고리의 다른 글
| [ postgresql ] 파라미터 (1) | 2025.07.07 |
|---|---|
| [ postgresql ] sequence 문법 및 사용하기 (0) | 2025.07.07 |
| [ postgresql ] 많이 쓰는 extension (0) | 2025.07.07 |
| [ PostgreSQL ] 1. vacuum ( vacuum 이 필요한 이유) (1) | 2025.07.05 |
| [ postgresql ] 클라이언트 툴 psql 설치 접속 간단한 사용법 알아보자 (0) | 2024.10.23 |