В настоящее время, чтобы проверить, использовался ли Быть в спящем режиме кэш 2-го уровня для запроса Базы данных, я проверяю свой журнал SQL (через p6spy или logSql=true в Datasource.groovy), чтобы видеть, инициировал ли Grais/Hibernate SQL-запрос. И я предполагаю, что, если запрос не был зарегистрирован, это могло бы означать, что кэш использовался.
Это довольно сложно для простой информации, не так ли?
Вы знаете простой способ получить и зарегистрировать информацию: "Кэш использовался по сравнению с запросом DB, был инициирован"?
Править: В соответствии с рекомендациями Паскаля, я добавил это trace 'org.hibernate.cache'
к моей log4j конфигурации.
Вы можете активировать org.hibernate.cache
category для регистрации всей активности кэша второго уровня. Для этого (согласно Grails FAQ) отредактируйте файл Config.groovy
. Найдите строку с:
hibernate = "off"
и замените ее на:
hibernate.cache = "trace,stdout"
Короткий ответ: когда включено ведение журнала запросов, каждый запрос регистрируется.
Различные статистические данные доступны через SessionFactory.getStatistics ()
и Session.getStatistics ()
. Выполнение запроса и счетчики попаданий и промахов в кэше запросов недоступны в SessionStatistics.
В тестовой среде, где у вас нет одновременных сеансов, вы можете выполнить свой кэшируемый запрос дважды и подтвердить, что оба из SessionStatistics.getQueryCacheHitCount ()
и SessionStatistics.getQueryExecutionCount ()
только увеличился на 1.
Профилировщик Hibernate наиболее эффективно представляет всю эту статистику и журналы.