Pgpool-II는 사용자 스키마에 대한 쿼리 캐시를 무효화하지 않습니다.

Pgpool-II는 사용자 스키마에 대한 쿼리 캐시를 무효화하지 않습니다.

다음과 같은 쿼리를 캐시하도록 (v9.5) pgpool2로 (v3.4.3)을 구성했습니다 .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는 스키마 수식 테이블 이름의 스키마 이름 pat를 무시하고 캐시 무효화가 실패합니다.

및 데이터베이스 에 및 확장을 pgpool_adm모두 pgpool_recovery설치 했지만 캐시가 여전히 무효화되지 않습니다.pgpool_regclassapplicationpostgres

관련 정보