Pgpool-II はユーザースキーマのクエリキャッシュを無効にしない

Pgpool-II はユーザースキーマのクエリキャッシュを無効にしない

次のようにクエリをキャッシュするようにpgpool2(v3.4.3) と(v9.5)を設定しました。postgresql

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 はスキーマ修飾されたテーブル名のスキーマ名部分を無視し、キャッシュの無効化が失敗します。

pgpool_admpgpool_recoveryおよび拡張機能をとデータベースpgpool_regclassの両方にインストールしましたが、キャッシュがまだ無効化されません。applicationpostgres

関連情報