java-休眠:从未使用过查询缓存

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

我很确定我已经正确设置了它:

> 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

上一篇:我的应用程序调用为什么这么慢?


下一篇:LINQ示例的复杂性是什么?