代码之家  ›  专栏  ›  技术社区  ›  fabien7474 Jan Tchärmän

如何知道/记录查询是否使用了Hibernate二级缓存?

  •  12
  • fabien7474 Jan Tchärmän  · 技术社区  · 15 年前

    目前,为了检查hibernate二级缓存是否用于数据库查询,我检查了我的sql日志(通过datasource.groovy中的p6spy或logsql=true),看看grais/hibernate是否触发了sql查询。我假设如果查询没有被记录,可能意味着使用了缓存。

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

    那么,您知道一种简单的方法来获取和记录信息吗:“cache was used vs.db query was triggered”?

    编辑 :根据pascal的建议,我添加了以下内容 trace 'org.hibernate.cache' 我的log4j配置。

    2 回复  |  直到 15 年前
        1
  •  6
  •   Pascal Thivent    15 年前

    你可以激活 org.hibernate.cache category 记录所有二级缓存活动。这样做(根据圣杯 FAQ ,编辑您的 Config.groovy 文件。查找行:

    hibernate = "off"
    

    替换为:

    hibernate.cache = "trace,stdout"
    
        2
  •  5
  •   Lachlan Roche    15 年前

    简而言之,当启用查询日志记录时,将记录每个查询。

    各种统计数据可通过 SessionFactory.getStatistics() Session.getStatistics() . 查询执行和查询缓存命中和未命中计数在会话统计上不可用。

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

    这个 Hibernate Profiler 最有效地显示所有这些统计信息和日志。

    推荐文章