2009-08-26 3 views
0

Я использовал nhibernate для моей реализации. Существует множество запросов к базам данных, и для сокращения времени обработки я включил кеширование запросов и загрузил полные данные таблицы в приложении при запуске. Затем сделал linq против него. Кэширование на вторичном уровне и кеширование запросов включены. Он работает, но когда я делаю обработку несколько раз, в моих файлах журналов я вижу запросы против кэшированных таблиц с его основным ключом, и это делает это для каждой из строк в этой таблице. Я думаю, что это происходит потому, что мой запрос противоречит полной таблице без каких-либо условий. Я не знаю, из-за каких-либо проблем в моем коде или в любой другой проблеме. Когда я делаю это с меньшим количеством сущностей, похоже, он работает. Кто-нибудь знает что-нибудь об этой проблеме? Кэширование запросов кэширует только первичные ключи строк?Является ли объект кэширован в Query Caching?

ответ

2

Кэширование запросов кэширует только первичный ключ результатов запроса. Из query cache documentation:

Обратите внимание, что кэш запросов не кэша состояния любого лица в наборе результатов; он кэширует только идентификаторы значения и результаты типа значения. Поэтому кеш запросов всегда должен использоваться в сочетании с кэшем второго уровня .