Este tópico descreve o recurso de global plan cache (GPC) do PolarDB for PostgreSQL.
Informações básicas
Nas versões anteriores do PolarDB, o cache de planos estava vinculado a prepared statements. Essa abordagem apresentava duas desvantagens:
Os caches de planos ficavam isolados em conexões individuais e não podiam ser compartilhados.
Cada conexão mantinha seu próprio cache de planos, o que resultava em alto consumo de memória.
O PolarDB for PostgreSQL introduz o recurso GPC para resolver esses problemas, permitindo que diferentes conexões compartilhem o mesmo cache de planos.
É possível compartilhar planos entre diferentes prepared statements e conexões. Para aplicações com muitas instruções SQL distintas, o GPC reduz significativamente o uso de memória e diminui o risco de erros de falta de memória (OOM). Esse mecanismo eficiente de cache de planos também reduz o custo de geração de planos de execução, melhorando o desempenho.
O compartilhamento de planos ocorre apenas quando as chaves de consulta são idênticas. Uma chave de consulta consiste nas seguintes partes:
Texto da consulta.
ID do banco de dados.
Caminho de busca de objetos.
ID do usuário.
Aplicabilidade
-
O recurso está disponível para as seguintes versões do PolarDB for PostgreSQL:
PostgreSQL 18 (versão secundária do mecanismo 2.0.18.0.1.0 ou posterior)
PostgreSQL 17 (versão secundária do mecanismo 2.0.17.2.1.0 ou posterior)
PostgreSQL 16 (versão secundária do mecanismo 2.0.16.3.1.1 ou posterior)
PostgreSQL 15 (versão secundária do mecanismo 2.0.15.7.1.1 ou posterior)
PostgreSQL 14 (versão secundária do mecanismo 2.0.14.9.15.0 ou posterior)
PostgreSQL 11 (versão secundária do mecanismo 2.0.11.9.28.0 ou posterior)
NotaVisualize a minor engine version number no console ou execute a instrução
SHOW polardb_version;. Caso seu cluster não atenda ao requisito de versão secundária do mecanismo, upgrade the minor engine version. O recurso GPC vem ativado por padrão em clusters que atendem aos requisitos de versão.
Limites
O GPC oferece suporte apenas a prepared statements. Não há suporte para cache de planos em cenários PL/SQL.
Há suporte apenas para as instruções
SELECT,INSERT,UPDATEeDELETE.Não há suporte para tabelas temporárias.
Parâmetros
Parâmetro | Descrição |
polar_gpc_mem | Defina o tamanho de memória para o GPC. Unidade: MB. O valor padrão é 30 MB. O valor não pode exceder o tamanho de Nota
|
polar_enable_gpc_level | Nível em que o recurso GPC é ativado. Este parâmetro pode ser modificado dinamicamente. Valores válidos:
Nota
|
polar_gpc_clean_timeout | Intervalo de tempo para limpar entradas do GPC pouco utilizadas. Este parâmetro pode ser modificado dinamicamente. Unidade: segundos. O valor padrão é 1.800 segundos. O valor pode variar de 0 segundos a 24 horas. |
polar_worker.gpc_clear_interval | Intervalo de tempo para limpar entradas inválidas do GPC. Este parâmetro pode ser modificado dinamicamente. Unidade: segundos. O valor padrão é 60 segundos. O valor máximo é (2^32 - 1)/1.000. |
polar_gpc_clean_max | Quantidade de entradas do GPC a serem limpas por vez. Este parâmetro pode ser modificado dinamicamente. O valor padrão é 100. O intervalo de valores vai de 10 a 10.000. |
polar_gpc_partitions | Número de tabelas hash usadas para armazenar entradas do GPC. O valor padrão é 32. O intervalo de valores vai de 1 a 1.024. Nota Reinicie o cluster para que a modificação do parâmetro tenha efeito. |
polar_gpc_entries | Número máximo de entradas em cada tabela hash. O valor padrão é 1.024. O intervalo de valores vai de 1 a 10.000. Nota Reinicie o cluster para que a modificação do parâmetro tenha efeito. |
Guia de uso
As visualizações e funções de monitoramento do recurso GPC estão incluídas na extensão polar_gpc. Execute o comando abaixo para criar essa extensão.
CREATE EXTENSION IF NOT EXISTS polar_gpc;