Я настроил 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_recovery
и pgpool_regclass
расширения как на application
и postgres
базы данных, но кеш все еще не становится недействительным.