【发布时间】:2018-05-21 12:01:39
【问题描述】:
我们有一个包含 500.000 个子对象的父对象。我们使用 Hibernate 与 ehcache 作为缓存提供者进行映射。对实体和集合使用二级缓存效果很好,因为我们可以避免对数据库的请求。
但是通过二级缓存加载 500.000 个对象仍然会产生大量的 cpu 和内存垃圾,并导致几秒钟的响应时间。由于子对象不是不可变的,我们不能启用 hibernate.cache.use_reference_entries 属性。
在hibernate 2级缓存之上使用dao对象的应用层缓存,没有cpu和垃圾内存开销。响应时间是几毫秒而不是几秒。
但是这个解决方案的最大缺点是,我们必须自己管理这个缓存。包括集群多线程系统中的失效和同步。
我的问题是,是否有更好的解决方案,具有低 cpu 和垃圾的优点?有人有处理大型收藏的经验吗?
【问题讨论】:
标签: performance hibernate caching collections