PostgreSQL 18 메모리 구조

PostgreSQL 18 메모리 구조 An architecture diagram generated by Archify. 메모리 컨텍스트 · 캐시, 파싱, 실행 상태 · backend 개인 메모리 (프로세스마다) 메모리 컨텍스트 캐시, 파싱, 실행 상태 client backend · 접속 하나당 하나 · backend 개인 메모리 (프로세스마다) client backend 접속 하나당 하나 temp_buffers · 임시 테이블 전용 · backend 개인 메모리 (프로세스마다) · 8MB temp_buffers 임시 테이블 전용 8MB work_mem · 정렬, 해시 테이블 · backend 개인 메모리 (프로세스마다) · 4MB work_mem 정렬, 해시 테이블 4MB 버퍼 매핑 해시 · 블록 태그 → buffer id · 공유 메모리 (모든 프로세스가 같이 씀) 버퍼 매핑 해시 블록 태그 → buffer id Buffer Descriptors · 태그, pin, usage, dirty · 공유 메모리 (모든 프로세스가 같이 씀) · 1MB Buffer Descriptors 태그, pin, usage, dirty 1MB Buffer Blocks (shared_buffers) · 8kB 페이지 16384칸 · 공유 메모리 (모든 프로세스가 같이 씀) · 128MB Buffer Blocks (shared_buffers) 8kB 페이지 16384칸 128MB WAL buffers · WAL 레코드를 모아 두는 곳 · 공유 메모리 (모든 프로세스가 같이 씀) · 4MB WAL buffers WAL 레코드를 모아 두는 곳 4MB 락 테이블, PGPROC, AIO 핸들 등 · 그 밖의 공유 구조 · 공유 메모리 (모든 프로세스가 같이 씀) 락 테이블, PGPROC, AIO 핸들 등 그 밖의 공유 구조 checkpointer, bgwriter · dirty 페이지 쓰기 · Architecture component checkpointer, bgwriter dirty 페이지 쓰기 walwriter · WAL buffers flush · Architecture component walwriter WAL buffers flush 데이터 파일 · $PGDATA/base · 디스크 데이터 파일 $PGDATA/base WAL 파일 · $PGDATA/pg_wal · 디스크 WAL 파일 $PGDATA/pg_wal 임시 파일 · base/pgsql_tmp · 디스크 임시 파일 base/pgsql_tmp 블록 찾기 buffer id 칸 위치 페이지 읽기/쓰기 WAL 기록 dirty 페이지 write, fsync 읽기 (io worker) flush 요청 write, fsync 넘치면 임시 파일로 backend 개인 메모리 (프로세스마다) 공유 메모리 (모든 프로세스가 같이 씀) 디스크 Legend backend 개인 메모리 프로세스 공유 메모리 디스크