Uso de caché compartida de planes - Amazon Aurora

Uso de caché compartida de planes

Descripción general

Aurora PostgreSQL utiliza un modelo de proceso por usuario en el que cada conexión de cliente crea un proceso de backend dedicado. Cada proceso de backend mantiene su propia caché de plan local para las instrucciones preparadas. Dado que estas cachés no se pueden compartir entre procesos, las aplicaciones que utilizan muchas instrucciones preparadas pueden crear cachés duplicadas en diferentes procesos de backend, lo que provoca un aumento del uso de memoria.

Las versiones 17.6 y posteriores, y 16.10 y posteriores, de Aurora PostgreSQL introducen la funcionalidad de caché compartida de planes. Al habilitar esta característica, los procesos de backend pueden compartir planes genéricos, lo que reduce el uso de memoria y mejora el rendimiento al eliminar la generación de planes duplicados.

La caché compartida de planes utiliza los siguientes componentes como clave de caché:

  • Cadena de consulta (incluidos los comentarios)

  • Parámetros GUC relacionados con el planificador (incluido search_path)

  • ID de usuario

  • ID de base de datos

Los reinicios de la instancia restablecen la caché compartida.

Parameters

La siguiente tabla describe los parámetros que controlan la característica de caché compartida de planes:

Parámetro Descripción Valor predeterminado Permitido
apg_shared_plan_cache.enable Activa o desactiva la caché compartida de planes. 0 (desactivada) 0, 1
apg_shared_plan_cache.max El número máximo de entradas de caché. 200-1000 (dependiente del tamaño de la instancia) 100–50000
apg_shared_plan_cache.min_size_per_entry El tamaño mínimo de plan que se debe almacenar en la caché compartida. Los planes más pequeños utilizan la caché local para optimizar el rendimiento de OLTP. 16 KB 0-32768 (KB)
apg_shared_plan_cache.max_size_per_entry El tamaño máximo del plan para la caché compartida. Los planes más grandes solo almacenan información sobre el costo. 256 KB-4 MB (dependiente del tamaño de la instancia) 0-32768 (KB)
apg_shared_plan_cache.idle_generic_plan_release_timeout El tiempo tras el cual las sesiones inactivas liberan los planes genéricos locales. Los valores más bajos ahorran memoria; los valores más altos pueden mejorar el rendimiento. 10 segundos 0-2147483647 (ms)
nota

Puede modificar todos los parámetros sin necesidad de reiniciar.

Vistas y funciones de monitoreo

  • apg_shared_plan_cache(): muestra información detallada sobre las entradas de caché (accesos, validez, marcas de tiempo).

  • apg_shared_plan_cache_stat(): muestra estadísticas a nivel de instancia (expulsiones, invalidaciones).

  • apg_shared_plan_cache_reset(): elimina todas las entradas en apg_shared_plan_cache() y apg_shared_plan_cache_stat().

  • apg_shared_plan_cache_remove(cache_key): elimina una entrada de apg_shared_plan_cache() cuando esta coincide con cache_key.

Limitaciones

  • Solo funciona con instrucciones preparadas y no almacena en caché instrucciones PL/pgSQL.

  • No almacena en caché una consulta que contenga tablas temporales o tablas de catálogo.

  • No almacena en caché una consulta que dependa de RLS (seguridad de nivel de fila).

  • Cada réplica mantiene su propia caché (no se comparte entre réplicas).