한양과학기술고등학교

에듀테크 프로젝트 대시보드

설정 튜닝

shared_buffers work_mem effective_cache_size ALTER SYSTEM

기본값은 아주 작은 장비 기준입니다. 메모리 관련 몇 개만 올려도 체감이 큽니다.

1. 핵심 파라미터

파라미터권장 출발점 (RAM 8GB 예)
shared_buffersRAM 의 25% → 2GB (재시작 필요)
effective_cache_sizeRAM 의 50~75% → 5GB (힌트일 뿐, 메모리 안 씀)
work_mem16~64MB — 정렬/해시 노드마다 씀 (주의)
maintenance_work_mem256MB~1GB (VACUUM·인덱스 생성)
random_page_costSSD 면 1.1 (기본 4)
max_connections100 유지 + 풀 사용 (풀)

2. work_mem 함정

곱셈 조심
  • 실제 사용량 ≈ work_mem × 동시쿼리수 × 쿼리당 정렬·해시 노드수
  • work_mem = 256MB + 접속 50 + 복잡 쿼리 → OOM 가능
  • 전역은 보수적으로, 무거운 배치 쿼리에서만 SET work_mem = '512MB'; (세션 한정)

3. 변경 방법

ALTER SYSTEM SET shared_buffers = '2GB';   -- postgresql.auto.conf 에 기록
SELECT pg_reload_conf();                   -- reload 로 되는 것만 즉시 적용

SELECT name, setting, unit, pending_restart
FROM pg_settings WHERE name = 'shared_buffers';   -- pending_restart=t 면 재시작 필요
sudo systemctl restart postgresql@16-main

4. 도구

PGTune(pgtune.leopard.in.ua) 에 RAM·코어·용도를 넣으면 시작 설정을 만들어 줍니다. 이후 pg_stat_statements 와 캐시 적중률을 보며 조정하세요.

"인덱스는 공짜가 아니다 — 읽기를 빠르게 하고 쓰기를 느리게 한다"