Usar o cache de plano compartilhado
Visão geral
O Aurora PostgreSQL usa um modelo de processo por usuário em que cada conexão de cliente cria um processo de backend dedicado. Cada processo de backend mantém seu próprio cache de plano local para instruções preparadas. Como esses caches não podem ser compartilhados entre processos, as aplicações que usam muitas instruções preparadas podem criar caches duplicados em diferentes processos de backend, o que aumenta o uso da memória.
As versões 17.6 e posteriores e 16.10 e posteriores do Aurora PostgreSQL introduzem a funcionalidade de cache de plano compartilhado. Quando você habilita esse recurso, os processos de backend podem compartilhar planos genéricos, o que reduz o uso de memória e melhora o desempenho ao eliminar a geração de planos duplicados.
O cache de plano compartilhado usa os seguintes componentes como chave de cache:
string de consulta (incluindo comentários);
parâmetros de GUC relacionados ao planejador (inclusive
search_path);ID de usuário
ID do banco de dados.
As reinicializações da instância redefinem o cache compartilhado.
Parâmetros
A seguinte tabela descreve os parâmetros de um que controlam o recurso de cache de plano compartilhado:
| Parameter | Descrição | Padrão | Permitido |
|---|---|---|---|
apg_shared_plan_cache.enable |
Habilita ou desabilita o cache de plano compartilhado. | 0 (DESABILITADO) | 0, 1 |
apg_shared_plan_cache.max |
O número máximo de entradas de cache. | 200-1.000 (depende do tamanho da instância) | 100-50.000 |
apg_shared_plan_cache.min_size_per_entry |
O tamanho mínimo do plano para armazenar no cache compartilhado. Planos menores usam cache local para otimizar o desempenho de OLTP. | 16 KB | 0-32.768 (KB) |
apg_shared_plan_cache.max_size_per_entry |
O tamanho máximo do plano para cache compartilhado. Planos maiores armazenam somente informações de custo. | 256 KB-4 MB (depende do tamanho da instância) | 0-32.768 (KB) |
apg_shared_plan_cache.idle_generic_plan_release_timeout |
O tempo após o qual as sessões ociosas lançam planos genéricos locais. Valores mais baixos economizam memória; valores mais altos podem melhorar o desempenho. | 10 segundos | 0-2.147.483.647 (ms) |
nota
É possível modificar todos os parâmetros sem reiniciar.
Monitorar visualizações e funções
apg_shared_plan_cache(): mostra informações detalhadas de entradas do cache (acertos, validade e carimbos de data/hora).apg_shared_plan_cache_stat(): exibe estatísticas em nível de instância (remoções e invalidações).apg_shared_plan_cache_reset(): remove todas as entradas emapg_shared_plan_cache()eapg_shared_plan_cache_stat().apg_shared_plan_cache_remove(cache_key): remove uma entrada deapg_shared_plan_cache()quando a entrada corresponde àcache_key.
Limitações
Funciona somente com instruções preparadas e não armazena em cache instruções PL/pgSQL.
Não armazena em cache consultas que contenham tabelas temporárias ou tabelas de catálogo.
Não armazena em cache consultas que dependem de segurança em nível de linha (RLS).
Cada réplica mantém seu próprio cache (sem compartilhamento entre réplicas).