공유 계획 캐시 사용
개요
Aurora PostgreSQL은 사용자별 프로세스 모델을 사용하여, 클라이언트 연결마다 전용 백엔드 프로세스가 생성됩니다. 각 백엔드 프로세스는 준비된 문에 대해 자체 로컬 계획 캐시를 유지합니다. 이러한 캐시는 프로세스 간에 공유할 수 없으므로 준비된 문을 많이 사용하는 애플리케이션은 여러 백엔드 프로세스에서 중복 캐시를 생성하여 메모리 사용량이 증가할 수 있습니다.
Aurora PostgreSQL 버전 17.6 이상 및 16.10 이상에는 공유 계획 캐시 기능이 도입되었습니다. 이 기능을 활성화하면 백엔드 프로세스가 일반 계획을 공유할 수 있으므로 중복 계획 생성을 방지하여 메모리 사용량을 줄이고 성능을 개선할 수 있습니다.
공유 계획 캐시는 다음 구성 요소를 캐시 키로 사용합니다.
쿼리 문자열(설명 포함)
플래너 관련 GUC 파라미터(
search_path포함)사용자 ID
데이터베이스 ID
인스턴스가 재시작되면 공유 캐시가 재설정됩니다.
Parameters
다음 표에서는 공유 계획 캐시 기능을 제어하는 파라미터를 설명합니다.
| 파라미터 | 설명 | 기본값 | 허용됨 |
|---|---|---|---|
apg_shared_plan_cache.enable |
공유 계획 캐시를 켜거나 끕니다. | 0(꺼짐) | 0, 1 |
apg_shared_plan_cache.max |
캐시 항목의 최대 개수 | 200~1000(인스턴스 크기에 따라 다름) | 100–50000 |
apg_shared_plan_cache.min_size_per_entry |
공유 캐시에 저장할 최소 계획 크기. 규모가 작은 계획은 로컬 캐시를 사용하여 OLTP 성능을 최적화합니다. | 16KB | 0~32768(KB) |
apg_shared_plan_cache.max_size_per_entry |
공유 캐시의 최대 계획 크기. 규모가 큰 계획은 비용 정보만 저장합니다. | 256KB~4MB(인스턴스 크기에 따라 다름) | 0~32768(KB) |
apg_shared_plan_cache.idle_generic_plan_release_timeout |
유휴 세션에서 로컬 일반 계획이 해제되기까지 걸리는 시간입니다. 값이 낮을수록 메모리가 절약되고 값이 높을수록 성능이 향상될 수 있습니다. | 10초 | 0~2147483647(ms) |
참고
재시작하지 않고도 모든 파라미터를 수정할 수 있습니다.
보기 및 함수 모니터링
apg_shared_plan_cache()- 세부 캐시 항목 정보(적중 횟수, 유효성, 타임스탬프)를 표시합니다.apg_shared_plan_cache_stat()- 인스턴스 수준의 통계(제거, 무효화)를 표시합니다.apg_shared_plan_cache_reset()-apg_shared_plan_cache()및apg_shared_plan_cache_stat()의 모든 항목을 제거합니다.apg_shared_plan_cache_remove(cache_key)- 항목이cache_key와 일치하는 경우apg_shared_plan_cache()에서 해당 항목을 제거합니다.
제한 사항
준비된 문에서만 작동하며 PL/pgSQL 문은 캐싱하지 않음
임시 테이블 또는 카탈로그 테이블이 포함된 쿼리는 캐싱하지 않음
RLS(Row-Level Security)에 의존하는 쿼리는 캐싱하지 않음
각 복제본이 자체 캐시를 유지함(교차 복제본 공유 없음)