2012-04-25 2 views
0

나는 서버 측에이 같은 kbmMWUNIDACConnectionPool 속성을 설정 한 :KbmMW의 캐시 기능을 사용하는 방법은 무엇입니까?

kbmMWUNIDACConnectionPool1.EnableCache := True; 
kbmMWUNIDACConnectionPool1.MaxCacheAge := 30; 
kbmMWUNIDACConnectionPool1.MaxCacheEntries := 100; 
kbmMWUNIDACConnectionPool1.MaxCacheRecordCount := 10000; 

, 나는 효과적으로 Unidac 모니터 스크린 샷 제발 좀하지 않는 캐시 기능을 찾을 수 :

enter image description here

을 그것은 같은 쿼리 문이지만, 서버 측은 매번 데이터베이스에 질문합니다! 왜? 한마디 : 캐시 기능을 올바르게 사용하는 방법은 무엇입니까? 미리 감사드립니다. :)

답변

4

쿼리 문을 캐시해야하는 (xxxquery 구성 요소의 캐시 된 속성) 캐시 방법 (동일한 구성 요소의 CacheFlags)을 활성화해야합니다. 캐시 항목이 만료되지 않고 캐시에

  • mwcfDontGarbageCollect 남아있을 것입니다 - -

    CacheFlags이

    • 이 mwcfDontAge 할 수있는 캐시 항목이 수집 된 쓰레기 없을 것를
    • (효과는 나이를 해달라고 비슷) mwcfDefsOnly - 쿼리 정의 (fielddefs 및 매개 변수 정의) 만 캐시됩니다.
    • mwcfUpdateOnResolve - 해결되면 캐시 항목이 새로운 데이터와 field/paramdefs로 업데이트됩니다.
    • mwcfLeaveOnResolve - 해결되면 캐시 항목이 삭제됩니다.
    • mwcfNoParamsInCacheID - 캐시 ID의 일부로 매개 변수 내용을 저장하지 않습니다 (따라서 다른 매개 변수 값이 동일한 캐시 항목을 만듭니다).
    • mwcfIgnoreCachedParams - 사용하지 않습니다.
  • +0

    고마워요! @ KimMadsen, 클라이언트 측 구성 요소를 동시에 모든 속성을 설정해야합니까? –

    +0

    당신의 제안을 따르십시오, 클라이언트 측은 지금 아무런 문제가 없습니다! 감사! 그러나 서버 측은 여전히 ​​효과가 없습니다. ( –

    +0

    서버에서 동일한 옵션을 사용합니다. 클라이언트는 앱 서버쪽으로 연결 풀을 가지고 있으며, 그 값을 캐싱 할 수 있습니다. 데이터베이스에서 캐시를 사용하도록 설정하고 관련 캐싱 속성을 설정하고 캐시 할 때 작동해야하는 쿼리 구성 요소 (클라이언트 및 서버 측)를 정의하면 그렇게 할 것입니다. 무엇인가를 캐시에 저장하면 먼저 전체 작업을 수행해야합니다 이후의 요청 만 캐싱의 이점을 얻을 수 있습니다. –