본문으로 건너뛰기

enable_memoize

버전기본값context타입
14onuserboolean
15onuserboolean
16onuserboolean
17onuserboolean
18onuserboolean
19onuserboolean

planner가 nested loop join 안쪽의 parameterized scan 결과를 캐시하는 Memoize plan을 사용할지 정한다. 기본값은 on이다.

Memoize 노드는 바깥쪽 row가 넘겨준 파라미터 값별로 안쪽 scan의 결과를 캐시에 보관한다. 같은 값이 다시 들어오면 안쪽 scan을 건너뛰고 캐시에서 바로 돌려주므로, 바깥쪽 입력에 중복 값이 많을수록 효과가 크다. 캐시 공간이 모자라면 참조가 뜸한 항목부터 내보내고, 캐시 메모리 한도는 work_mem × hash_mem_multiplier를 따른다.

반대로 바깥쪽 입력에 중복이 거의 없으면 캐시 적중 없이 관리 비용만 얹힐 수 있다.

운영 노트: off는 진단 용도다. Memoize가 낀 plan이 느릴 때 EXPLAIN ANALYZE의 Hits/Misses/Evictions 수치를 먼저 보고, 세션에서 끈 plan과 비교해 캐시가 실제로 도움이 되는지 확인한다.

출처: PostgreSQL 18 문서