如何知道/记录Hibernate二级缓存是否用于查询?
目前,为了检查Hibernate二级缓存是否用于数据库查询,我检查了我的SQL日志(通过Datasource.groovy中的p6spy或logSql=true),查看Grais/Hibernate是否触发了SQL查询。我假设如果查询没有被记录,这可能意味着使用了缓存 对于一个简单的信息来说,这是相当复杂的,不是吗 那么,您知道一种获取和记录信息的简单方法吗:“缓存已使用,而DB查询已触发”如何知道/记录Hibernate二级缓存是否用于查询?,hibernate,logging,orm,grails,second-level-cache,Hibernate,Logging,Orm,Grails,Second Level Cache,目前,为了检查Hibernate二级缓存是否用于数据库查询,我检查了我的SQL日志(通过Datasource.groovy中的p6spy或logSql=true),查看Grais/Hibernate是否触发了SQL查询。我假设如果查询没有被记录,这可能意味着使用了缓存 对于一个简单的信息来说,这是相当复杂的,不是吗 那么,您知道一种获取和记录信息的简单方法吗:“缓存已使用,而DB查询已触发” 编辑:根据Pascal的建议,我将此跟踪“org.hibernate.cache”添加到我的log4j配
编辑:根据Pascal的建议,我将此
跟踪“org.hibernate.cache”
添加到我的log4j配置中。简短的回答是,当启用查询日志记录时,会记录每个查询
通过SessionFactory.getStatistics()
和Session.getStatistics()
可以获得各种统计信息。SessionStatistics上没有查询执行和查询缓存命中和未命中计数
在没有并发会话的测试环境中,可以执行两次可缓存查询,并断言SessionStatistics.getQueryCacheChitCount()
和SessionStatistics.getQueryExecutionCount()
仅增加1
最有效地显示所有这些统计数据和日志 您可以激活
org.hibernate.cache
来记录所有二级缓存活动。为此(根据Grails),编辑Config.groovy
文件。查找带有以下内容的行:
hibernate = "off"
并将其替换为:
hibernate.cache = "trace,stdout"