

# 공유 계획 캐시 사용
<a name="apg-shared-plan-cache"></a>

## 개요
<a name="apg-shared-plan-cache-overview"></a>

Aurora PostgreSQL은 사용자별 프로세스 모델을 사용하여, 클라이언트 연결마다 전용 백엔드 프로세스가 생성됩니다. 각 백엔드 프로세스는 준비된 문에 대해 자체 로컬 계획 캐시를 유지합니다. 이러한 캐시는 프로세스 간에 공유할 수 없으므로 준비된 문을 많이 사용하는 애플리케이션은 여러 백엔드 프로세스에서 중복 캐시를 생성하여 메모리 사용량이 증가할 수 있습니다.

Aurora PostgreSQL 버전 17.6 이상 및 16.10 이상에는 공유 계획 캐시 기능이 도입되었습니다. 이 기능을 활성화하면 백엔드 프로세스가 일반 계획을 공유할 수 있으므로 중복 계획 생성을 방지하여 메모리 사용량을 줄이고 성능을 개선할 수 있습니다.

공유 계획 캐시는 다음 구성 요소를 캐시 키로 사용합니다.
+ 쿼리 문자열(설명 포함)
+ 플래너 관련 GUC 파라미터(`search_path` 포함)
+ 사용자 ID
+ 데이터베이스 ID

인스턴스가 재시작되면 공유 캐시가 재설정됩니다.

## Parameters
<a name="apg-shared-plan-cache-parameters"></a>

다음 표에서는 공유 계획 캐시 기능을 제어하는 파라미터를 설명합니다.


| 파라미터 | 설명 | 기본값 | 허용됨 | 
| --- | --- | --- | --- | 
| apg\$1shared\$1plan\$1cache.enable | 공유 계획 캐시를 켜거나 끕니다. | 0(꺼짐) | 0, 1 | 
| apg\$1shared\$1plan\$1cache.max | 캐시 항목의 최대 개수 | 200\$11000(인스턴스 크기에 따라 다름) | 100–50000 | 
| apg\$1shared\$1plan\$1cache.min\$1size\$1per\$1entry | 공유 캐시에 저장할 최소 계획 크기. 규모가 작은 계획은 로컬 캐시를 사용하여 OLTP 성능을 최적화합니다. | 16KB | 0\$132768(KB) | 
| apg\$1shared\$1plan\$1cache.max\$1size\$1per\$1entry | 공유 캐시의 최대 계획 크기. 규모가 큰 계획은 비용 정보만 저장합니다. | 256KB\$14MB(인스턴스 크기에 따라 다름) | 0\$132768(KB) | 
| apg\$1shared\$1plan\$1cache.idle\$1generic\$1plan\$1release\$1timeout | 유휴 세션에서 로컬 일반 계획이 해제되기까지 걸리는 시간입니다. 값이 낮을수록 메모리가 절약되고 값이 높을수록 성능이 향상될 수 있습니다. | 10초 | 0\$12147483647(ms) | 

**참고**  
재시작하지 않고도 모든 파라미터를 수정할 수 있습니다.

## 보기 및 함수 모니터링
<a name="apg-shared-plan-cache-monitoring"></a>
+ `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()`에서 해당 항목을 제거합니다.

## 제한 사항
<a name="apg-shared-plan-cache-limitations"></a>
+ 준비된 문에서만 작동하며 PL/pgSQL 문은 캐싱하지 않음
+ 임시 테이블 또는 카탈로그 테이블이 포함된 쿼리는 캐싱하지 않음
+ RLS(Row-Level Security)에 의존하는 쿼리는 캐싱하지 않음
+ 각 복제본이 자체 캐시를 유지함(교차 복제본 공유 없음)