2016-02-29 5 views
0

Я новичок в проект, и я заметил, что в производственном сервере мы имеем такие параметры:Hibernate кэш второго уровня странные настройки

<prop key="hibernate.dialect">${db.dialect}</prop> 
       <prop key="hibernate.show_sql">${show.sql}</prop> 
       <prop key="hibernate.bytecode.use_reflection_optimizer">false</prop> 
       <prop key="hibernate.cache.provider_class">Custom org.jboss.hibernate.jbc.cacheprovider.TreeCacheProvider</prop> 
       <prop key="hibernate.cache.use_second_level_cache">false</prop> 
       <prop key="hibernate.cache.use_query_cache">true</prop> 

Я сомневаюсь, что эта комбинация хорошо:

<prop key="hibernate.cache.use_second_level_cache">FALSE</prop> 
<prop key="hibernate.cache.use_query_cache">TRUE</prop> 

Что была бы целью кэширования запроса без использования кеша второго уровня. Что может быть смысл для установки в этом случае поставщика_класса ..

Более того, для меня кеширование q ueries без кеширования объектов может снизить эффективность .. не так ли?

ответ

0

Кэш запросов можно использовать автономно, так как он кэширует идентификаторы результатов запроса, устраняя необходимость повторного выполнения запроса.

Никто не сможет сказать вам, является ли преимущество в вашем случае выше, чем влияние памяти на сохранение всех этих запросов, результатов и параметров запроса. В зависимости от латентности вашего дБ и того, насколько огромны ваши запросы, результаты будут меняться, но я лично не буду использовать кеш запросов без уважительной причины и только для нескольких запросов, где параметры запроса не изменяются.

Смежные вопросы