2009-08-26 4 views
0

구현을 위해 nhibernate를 사용했습니다. 많은 데이터베이스 가져 오기가 관련되어 있으며 처리 시간을 줄이기 위해 쿼리 캐싱을 활성화하고 시작시 응용 프로그램에 전체 테이블 데이터를로드했습니다. 그런 다음 linq을 반대 했어. 보조 수준 캐싱 및 쿼리 캐싱이 사용됩니다. 그것은 작동하지만 여러 번 처리 할 때 로그 파일에서 기본 키를 사용하여 캐시 된 테이블에 대한 쿼리를 볼 수 있으며 해당 테이블의 각 행에 대해 쿼리를 수행 할 수 있습니다. 나는 내 쿼리가 아무런 조건없이 전체 테이블을 상대로이기 때문에 그것이 일어난다 고 생각한다. 내 코드 나 다른 문제로 인해 문제가 발생했는지 모르겠습니다. 적은 수의 엔티티로 처리하면 작동하는 것 같습니다. 누구든지이 문제에 대해 아는 것이 있습니까? 쿼리 캐싱 캐시는 행의 기본 키입니까?엔터티가 쿼리 캐싱에 캐시됩니까?

답변

2

쿼리 캐싱은 쿼리 결과의 기본 키만 캐시합니다. 쿼리 캐시가 캐시 결과 세트에있는 엔티티의 상태를하지 않는

주, 다음 query cache documentation에서 식별자 값 및 값 유형의 결과 만 캐시합니다. 따라서 쿼리 캐시는 보조 캐시 캐시와 함께 과 함께 사용해야합니다.

관련 문제