gpt4 book ai didi

java - Hibernate 缓存导致@Cacheable 实体的低百分比性能下降?

转载 作者:行者123 更新时间:2023-11-30 11:46:05 24 4
gpt4 key购买 nike

我有一个使用 Hibernate 持久性库的 Java 应用程序,其中包含大约 100 个映射类。为了尝试二级缓存,我将 @Cacheable 添加到映射类中的 5 个。这导致标准计算任务花费的时间是以前的两倍,尽管缓存项有几次命中(如 Couchbase 缓存监控控制台所示)。由于 Couchbase 统计数据的 transient 特性,我无法获得准确的平均命中率,但我估计它大约只有 10-20%。

为某些实体启用缓存是否会影响其他未标记为@Cacheable 的实体的访问时间,从而导致性能下降?或者仅仅是由于缓存查询的延迟增加以及缓存项的低命中率造成的?

我正在使用 Hibernate 3.3。我已禁用查询缓存。使用 Memcached 和 GemFire 作为缓存提供程序时,我得到了类似的结果。

最佳答案

好吧,我想这取决于缓存提供程序如何查看条目是否被缓存。如果这是一个昂贵的操作,如果缓存命中率很低,从数据库中检索数据将是昂贵的。一般来说,缓存提供商应该努力使它尽可能便宜。例如,在 Infinispan 的情况下,这是一个简单的内存检查,以查看实体是否被缓存,如果没有,则通过 Hibernate 从数据库中检索条目,Infinispan 缓存提供程序将其放入缓存中使用一个非常有效的 put 操作称为 putForExternalRead .

您真的应该试试 Infinispan 缓存提供程序。更多信息在 https://docs.jboss.org/author/x/FgY5 .如果您在 JBoss AS7 中运行,请阅读 https://docs.jboss.org/author/x/LoJ7相反。

免责声明:我是一名 Infinispan 开发者。

关于java - Hibernate 缓存导致@Cacheable 实体的低百分比性能下降?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9991833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com