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_adm,pgpool_recoverypgpool_regclass擴展,但快取仍然沒有失效。applicationpostgres

相關內容