He configurado pgpool2
(v3.4.3) con postgresql
(v9.5) para almacenar en caché consultas como esta:
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'
Puedo confirmar que las consultas realmente se están almacenando en caché.
El problema es que el caché no se invalidaría incluso después de actualizaciones, inserciones y eliminaciones en la misma tabla. Eso es lo que sucede:
- Seleccione una fila de la tabla; la caché no está presente; se realiza la selección real.
- Seleccione la misma fila: la fila se recupera del caché.
- Actualice la misma fila: éxito.
- Seleccione la misma fila: la fila se recupera del caché.
La invalidación de caché funciona como se esperaba en public
el esquema, pero no en otros esquemas. He leído esto enPreguntas más frecuentes:
Cuando uso nombres de tablas calificados por esquema, pgpool-II no invalida la memoria caché de consultas y obtuve datos desactualizados. ¿Por qué? Parece que no instaló la función "pgpool_regclass". Sin la función, pgpool-II ignora el nombre del esquema del nombre de la tabla calificada por el esquema y la invalidación de la caché falla.
He instalado ambas pgpool_adm
extensiones y en las pgpool_recovery
bases de datos y pero el caché aún no se invalida.pgpool_regclass
application
postgres