Pgpool-II 不会使用户架构的查询缓存无效

Pgpool-II 不会使用户架构的查询缓存无效

我已将pgpool2(v3.4.3)和postgresql(v9.5)配置为缓存如下查询:

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'

我可以确认查询确实被缓存了。

问题是,即使在同一个表上进行更新、插入和删除后,缓存也不会失效。这就是发生的情况:

  • 从表中选择一行 - 缓存不存在 - 执行实际选择。
  • 选择同一行-从缓存中检索行。
  • 更新同一行-成功。
  • 选择同一行-从缓存中检索行。

缓存失效在public架构中按预期工作,但在其他架构中则不然。我读过这篇文章常问问题

当我使用架构限定的表名时,pgpool-II 不会使内存查询缓存失效,并且我得到了过时的数据。为什么?似乎你没有安装“pgpool_regclass”函数。如果没有该函数,pgpool-II 会忽略架构限定表名的架构名称 pat,并且缓存失效会失败。

我已经在和数据库上安装了pgpool_admpgpool_recoverypgpool_regclass扩展,但缓存仍然没有失效。applicationpostgres

相关内容