Pgpool-II não invalidaria o cache de consulta para esquemas de usuário

Pgpool-II não invalidaria o cache de consulta para esquemas de usuário

Eu configurei pgpool2(v3.4.3) com postgresql(v9.5) para armazenar em cache consultas como esta:

memory_cache_enabled = on
memqcache_method = 'shmem'
memqcache_total_size = 67108864
memqcache_max_num_cache = 10000000
memqcache_expire = 600
memqcache_auto_cache_invalidation = on
memqcache_maxcache = 409600
memqcache_cache_block_size = 1048576
memqcache_oiddir = '/var/log/pgpool/oiddir'

Posso confirmar que as consultas estão realmente sendo armazenadas em cache.

O problema é que o cache não seria invalidado mesmo após atualizações, inserções e exclusões na mesma tabela. Isso é o que acontece:

  • Selecione uma linha da tabela - o cache não está presente - a seleção real é executada.
  • Selecione a mesma linha - a linha é recuperada do cache.
  • Atualize a mesma linha - sucesso.
  • Selecione a mesma linha - a linha é recuperada do cache.

A invalidação de cache funciona conforme esperado no publicesquema, mas não em outros esquemas. Eu li isso emPerguntas frequentes:

Quando uso nomes de tabelas qualificados pelo esquema, o pgpool-II não invalida o cache de consulta de memória e obtenho dados desatualizados. Por que? Parece que você não instalou a função "pgpool_regclass". Sem a função, o pgpool-II ignora o nome do esquema pat do nome da tabela qualificada do esquema e a invalidação do cache falha.

Instalei extensões pgpool_adme nos bancos de dados e pgpool_recovery, mas o cache ainda não está invalidando.pgpool_regclassapplicationpostgres

informação relacionada