10 년간의 광산 경험에서 우리는 기본적으로 RDBMS를 Oracle 또는 SQL 서버 중 하나를 사용하여 구성했습니다. 기본적으로 (적어도 oracle에서는) 비활성화 된 결과 캐시를 조정하지 않았습니다. ehcache/memcache/redis 등의 응용 프로그램 수준에서 캐시 옵션을 항상 캐싱 솔루션으로 사용하는 것을 보았습니다.RDBMS 결과 캐싱 대 애플리케이션 레벨 캐싱?
질문 - DB 서버에서 메모리 대역폭을 사용할 수 있다면 성능상의 문제가 있는지 여부에 관계없이 결과 캐시 즉 DB 수준을 적극적으로 사용하는 것은 좋지 않은 옵션입니까? 이 쿼리 결과가 인 경우 select * from employee where department = 'Finance'
은 항상 재무 부서에 해당하여 캐시됩니다.
내 질문에 하드웨어가 특정 요구 사항에 따라 LRU 또는 적절한 알고리즘을 지원할 수 있다면 DB 레벨 캐싱을 사용하지 않는 것이 좋습니다. 키를 생성하고 (예 : memcached와 같이) 별도의 서버로 배포해야하는 응용 프로그램 수준 캐싱이 필요합니까?
내 일반적인 규칙 : 캐시를 캐시하지 마십시오. 데이터베이스는 모든 종류의 캐싱을 수행합니다. 캐싱의 또 다른 레이어를 추가 할 필요가 거의 없습니다. –