13

目前,为了检查 Hibernate 二级缓存是否用于数据库查询,我检查了我的 SQL 日志(通过 Datasource.groovy 中的 p6spy 或 logSql=true)以查看 Grais/Hibernate 是否触发了 SQL 查询。而且我假设如果没有记录查询,则可能意味着使用了缓存。

一个简单的信息是相当复杂的,不是吗?

那么您是否知道获取和记录信息的简单方法:“使用缓存与触发数据库查询”?

编辑:按照 Pascal 的建议,我已将此添加trace 'org.hibernate.cache'到我的 log4j 配置中。

4

2 回答 2

7

您可以激活该org.hibernate.cache 类别以记录所有二级缓存活动。为此(根据 Grails FAQ),编辑您的Config.groovy文件。找到以下行:

hibernate = "off"

并将其替换为:

hibernate.cache = "trace,stdout"
于 2010-02-28T13:55:37.040 回答
6

简短的回答是,启用查询日志记录时,会记录每个查询。

各种统计数据可通过SessionFactory.getStatistics()和获得Session.getStatistics()。SessionStatistics 上不提供查询执行和查询缓存命中和未命中计数。

在没有并发会话的测试环境中,您可以执行两次可缓存查询,并断言两者SessionStatistics.getQueryCacheHitCount()都只SessionStatistics.getQueryExecutionCount()增加 1。

Hibernate Profiler最有效地呈现所有这些统计信息和日志。

于 2010-02-28T13:30:55.950 回答