在我的应用程序中执行一些性能调整时,我注意到,从未使用过休眠查询缓存.
我很确定我已经正确设置了它:
> hibernate.cache.provider_class = org.hibernate.cache.EhCacheProvider
> hibernate.cache.use_query_cache = true
>我在要缓存的查询上使用setCacheable(true)
当我通过多个线程一遍又一遍地执行同一组操作时,我已经建立了一个简单的压力测试.当我检查休眠统计信息时,结果表明查询缓存hitCount为零!
我想念什么?
编辑:
对于所有人,我都设置了hibernate.generate_statistics = true
解决方法:
I have set up a simple stress test, when I perform the same set of operations over and over by several threads. When I check hibernate statistics it turns out that query cache hitCount is zero!
好吧,虽然可以从统计信息中获取有关缓存命中的统计信息(如果通过在配置中设置属性hibernate.generate_statistics = true启用统计信息),但这不是IMO诊断缓存“问题”的最佳方法.
我的建议是激活1.执行的DML语句和2.缓存活动的日志记录.相关的日志记录类别是:
> org.hibernate.SQL在执行所有SQL DML语句时记录它们
> org.hibernate.cache记录所有第二级缓存活动
与IMO相比,这对IMO在开发过程中的行为微调方面更为有用.
参考文献
> Hibernate Core参考文档
> 3.4.6. Hibernate statistics
> 3.5 Logging