공유 계획 캐시 사용 - Amazon Aurora

공유 계획 캐시 사용

개요

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)에 의존하는 쿼리는 캐싱하지 않음

  • 각 복제본이 자체 캐시를 유지함(교차 복제본 공유 없음)