在我的应用程序中执行某些性能调整时,我注意到,从未使用过hibernate查询缓存。
我很确定我已正确设置:
setCacheable(true)
当我通过多个线程反复执行相同的操作集时,我已经设置了一个简单的压力测试。当我检查hibernate统计信息时,结果是查询缓存hitCount为零!
我错过了什么?
编辑:
对于你们所有人:我设置了hibernate.generate_statistics = true
答案 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不会收集统计信息。你启用了统计数据吗?