hibernate二级缓存很慢

时间:2016-02-02 09:01:10

标签: java performance hibernate caching hibernate-4.x

我正在使用内存中的ehcache进行hibernate二级缓存,而且速度很慢。我的意思是,不比SQL慢,但是在SSD上使用快速数据库时也不会更快。实际的速度增加不到2倍,有时甚至不明显。

似乎其他人有同样的问题,但没有得到答案: http://forum.spring.io/forum/spring-projects/data/44353-hibernate-second-level-caching-slow-no-really-slow https://forum.hibernate.org/viewtopic.php?t=985913

经过一些分析后,看起来hibernate总是对缓存元素进行去除/重新水合,而不是直接存储它们,这导致了这种糟糕的性能(与直接使用ehcache相比,超过100倍)。

所以,我的问题是:

  • 可以直接休眠存储并恢复缓存的对象吗?
  • 还有其他方法可以加速二级缓存吗?
  • 是否有一种相对简单的替代机制可以实现更快的hibernate缓存?

2 个答案:

答案 0 :(得分:1)

  

可以直接hibernate存储和恢复缓存的对象吗?

不,它不能,因为这意味着并发会话将使用相同的对象实例,从而踩到彼此的脚趾。

  

还有其他方法可以加速二级缓存吗?

可能有数千种方法可以加快速度。其中大多数都取决于您的应用程序的特定要求。

  

是否有一种相对简单的替代机制可以更快   hibernate缓存?

不,至少目前不是。

答案 1 :(得分:0)

您是否已经解决了Hibernate二级缓存性能问题?,在某些应用程序diskPersistence和overFlowToDisk处于打开状态,并且在TRACE日志中注意到克隆/序列化/反序列化。没有看到为什么Hibernate / Ehcache必须再次克隆/反序列化本地JVM对象。