Hibernate:查询缓存从未使用过

时间:2010-08-24 14:57:58

标签: java performance hibernate orm jpa

在我的应用程序中执行某些性能调整时,我注意到,从未使用过hibernate查询缓存。

我很确定我已正确设置:

  • 在hibernate.cache.provider_class = org.hibernate.cache.EhCacheProvider
  • hibernate.cache.use_query_cache = true这个
  • 我对要缓存的查询使用setCacheable(true)

当我通过多个线程反复执行相同的操作集时,我已经设置了一个简单的压力测试。当我检查hibernate统计信息时,结果是查询缓存hitCount为零!

我错过了什么?

编辑:
对于你们所有人:我设置了hibernate.generate_statistics = true

3 个答案:

答案 0 :(得分:2)

  

当我通过多个线程反复执行相同的操作集时,我已经设置了一个简单的压力测试。当我检查hibernate统计信息时,结果是查询缓存hitCount为零!

嗯,虽然可以从统计信息中获取有关缓存命中的统计信息(如果您通过在配置中设置属性hibernate.generate_statistics=true启用统计信息),这是IMO不是最好的方法诊断缓存“问题”。

我的建议是激活1.执行的DML语句和2.缓存活动的日志记录。相关的日志记录类别是:

  • org.hibernate.SQL记录执行时的所有SQL DML语句
  • org.hibernate.cache记录所有二级缓存活动

在开发过程中,IMO比统计更有用,可以微调行为

参考

答案 1 :(得分:1)

虽然您没有提及,但您还设置了hibernate.cache.use_second_level_cache=true|false

答案 2 :(得分:0)

默认情况下,Hibernate不会收集统计信息。你启用了统计数据吗?

  • hibernate.generate_statistics = true