캐시 사이즈 확인 방법

nTels_Tarzan·2025년 4월 24일
post-thumbnail

PostgreSQL에서 캐시 관련 설정 및 사이즈는 성능에 큰 영향을 미칩니다. 크게 나누면 PostgreSQL 자체 캐시(shared_buffers)운영체제의 파일 시스템 캐시(OS Page Cache)로 나눌 수 있으며, PostgreSQL 내부에서도 다양한 메모리 캐시 영역이 있습니다. 아래는 그 종류와 각각의 확인/설정 방법입니다.


PostgreSQL 캐시 종류 및 확인 방법 정리

캐시 종류설명확인 방법설정 위치
shared_buffersPostgreSQL가 직접 사용하는 메모리 캐시. 테이블/인덱스 블록을 여기에 저장SHOW shared_buffers;postgresql.conf
OS Page CacheOS가 디스크 I/O 후 자동으로 메모리에 보관. PostgreSQL이 직접 제어하진 않음vmstat, free, top 명령어로 확인 (Linux)OS 커널 설정
work_mem정렬(SORT), 해시 조인 등 쿼리 연산 중 쓰이는 임시 메모리SHOW work_mem;postgresql.conf
maintenance_work_memVACUUM, CREATE INDEX 등 유지보수 작업 시 사용하는 캐시SHOW maintenance_work_mem;postgresql.conf
effective_cache_sizePostgreSQL이 쿼리 플래너에게 OS 캐시 크기를 힌트로 제공하는 설정. 직접 사용하진 않음SHOW effective_cache_size;postgresql.conf
temp_buffers임시 테이블에 사용하는 캐시 (세션 단위)SHOW temp_buffers;postgresql.conf or 세션 설정
wal_buffersWAL 데이터를 디스크 쓰기 전에 보관하는 버퍼SHOW wal_buffers;postgresql.conf
pg_buffercache (확장)실제 현재 shared_buffers에 어떤 블록이 올라와 있는지 조회 가능SELECT * FROM pg_buffercache;확장 설치 필요 (CREATE EXTENSION)

예시

1. Shared Buffers 크기 확인

SHOW shared_buffers;

또는 설정 파일에서 확인:

# postgresql.conf
# 일반적으로 전체 시스템 메모리의 25~40% 정도가 적당합
shared_buffers = 512MB

2. Work Mem 확인 및 설정

SHOW work_mem;

-- 세션 단위 설정 (예: 8MB로 일시 변경)
-- 정렬이나 조인 많은 쿼리에서는 너무 작으면 디스크 I/O 발생 (pg_temp 파일), 너무 크면 메모리 폭주 가능
SET work_mem = '8MB';

3. effective_cache_size

-- 이 값은 PostgreSQL의 쿼리 플래너가 인덱스 사용 여부를 판단할 때 참조하는 가상 값입니다. 실제 캐시가 아님
SHOW effective_cache_size;

4. 실제 캐시 사용 블록 확인 (pg_buffercache 확장)

-- 확장 설치
CREATE EXTENSION IF NOT EXISTS pg_buffercache;

-- 캐시에 올라와 있는 테이블 블록 확인
SELECT c.relname, count(*) AS buffers
FROM pg_buffercache b
JOIN pg_class c ON b.relfilenode = pg_relation_filenode(c.oid)
GROUP BY c.relname
ORDER BY buffers DESC;

profile
안녕하세요. 엔텔스 TarzanDB 공식계정입니다.

0개의 댓글