나는 다중 웹 서버와 분산 된 2 차 수준의 캐시가 가능할 것이라고 생각한다 - 그리고 아마도 공존해야한다.
우선 memcached 예제를 사용하면 분산 객체 저장을 지원하므로 사용하지 않는 경우 전환 할 수 있습니다. 그것은 작동합니다.
두 번째로 증가하는 웹 요청에 응답하기 위해 웹 서버 팜을 도입하고 있으며 이는 데이터 요청 증가를 의미합니다. 캐싱을 중단해도 쿼리를 통해 스 래싱 할 데이터베이스를 얼마나 최적화했는지는 중요하지 않습니다. 따라서 실행 시간은 향상되지만 데이터베이스가 데이터를 반환 할 때까지 기다릴 것입니다.
특히 웹 노드 1이 데이터 집합 A를 요청하고 웹 노드 2가 데이터 집합 A를 요청하는 경우 - 두 번째 수준의 캐싱을 사용하면 두 번 동일한 쿼리를 수행하지만 한 번만 수행합니다.
그래서 내 추천 :
이 두 번째 레벨 캐시를 죽이지 마십시오. 이미 구현을 위해 리소스를 사용했으며 비활성화하면 애플리케이션의 성능을 향상시키지 않습니다. memcached의 단일 노드조차 전혀없는 것보다 더 빠를 것입니다.
데이터베이스 작업을 최적화하십시오. 즉, 데이터베이스 측면 (인덱스, 뷰, SP, 기능, 읽기 전용 및 쓰기 전용 노드가있는 클러스터)과 응용 프로그램 측면 (쿼리 최적화, 지연/열망 로딩 프로파일 링, 데이터를 가져 오지 않음) Future, MutliQuery, MultiCriteria를 통해 단일 쿼리로 여러 쿼리를 결합해야 함)
Do 두 번째 수준 캐시 구현을 최적화하십시오. 만료 날짜가 무한한 데이터 집합이 있으므로 한 번만 쿼리하고 만료 날짜가 짧은 데이터 집합이 있으므로 비용이 많이 드는 쿼리가 더 자주 실행됩니다. 쿼리와 db를 최적화하면 쿼리의 성능이 향상되지만 2 차 수준 캐시는 짧은 만료 날짜 데이터 집합 이 일 때 캐시에서 더 자주 가져 오는 최대로드시 스킨을 저장합니다.
텍스트 쿼리를 사용하는 것은 일상적인 작업이 더 나은, (NHibernate.Search를 통해 NHibernate에 통합 할 수 있습니다) Lucene.NET 같은 독립적 인 서비스를 우리가 사용하는
걱정할 몇 가지 문제점이나 문제점을 강조 표시 할 수 있습니까? 또한 측정에 사용 된 최상의 측정 항목은 무엇입니까 ?? – leora