【问题标题】:How to know/log whether Hibernate 2nd-level cache was used or not for a query?如何知道/记录 Hibernate 2 级缓存是否用于查询?
【发布时间】:2011-01-22 00:02:08
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: hibernate logging orm grails second-level-cache


    【解决方案1】:

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

    hibernate = "off"
    

    并将其替换为:

    hibernate.cache = "trace,stdout"
    

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-07-06
        • 2013-10-31
        • 2014-11-28
        • 2011-12-18
        • 1970-01-01
        • 2016-09-20
        • 2011-04-10
        • 2011-08-10
        • 2017-02-20
        相关资源
        最近更新 更多