Pgpool-II würde den Abfragecache für Benutzerschemata nicht ungültig machen

Pgpool-II würde den Abfragecache für Benutzerschemata nicht ungültig machen

Ich habe pgpool2(v3.4.3) mit postgresql(v9.5) so konfiguriert, dass Abfragen wie diese zwischengespeichert werden:

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'

Ich kann bestätigen, dass die Abfragen tatsächlich zwischengespeichert werden.

Das Problem besteht darin, dass der Cache auch nach Aktualisierungen, Einfügungen und Löschungen in derselben Tabelle nicht ungültig wird. Folgendes passiert:

  • Wählen Sie eine Zeile aus der Tabelle aus. Der Cache ist nicht vorhanden. Die eigentliche Auswahl wird ausgeführt.
  • Wählen Sie die gleiche Zeile aus – die Zeile wird aus dem Cache abgerufen.
  • Aktualisieren Sie die gleiche Zeile – Erfolg.
  • Wählen Sie die gleiche Zeile aus – die Zeile wird aus dem Cache abgerufen.

Die Cache-Ungültigkeitserklärung funktioniert wie erwartet im publicSchema, aber nicht in anderen Schemas. Ich habe dies gelesen inFAQ:

Wenn ich schemaqualifizierte Tabellennamen verwende, macht pgpool-II den Speicherabfragecache nicht ungültig und ich erhalte veraltete Daten. Warum? Anscheinend haben Sie die Funktion „pgpool_regclass“ nicht installiert. Ohne die Funktion ignoriert pgpool-II den Schemanamen pat des schemaqualifizierten Tabellennamens und die Cache-Ungültigkeitserklärung schlägt fehl.

Ich habe sowohl die pgpool_adm, pgpool_recoveryals auch pgpool_regclassdie Erweiterungen sowohl auf den applicationals auch auf postgresden Datenbanken installiert, aber der Cache wird immer noch nicht ungültig.

verwandte Informationen