首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate缓存技术

Hibernate缓存技术
EN

Stack Overflow用户
提问于 2012-04-18 10:39:48
回答 2查看 1.3K关注 0票数 5

我有一个有200个表格的应用程序--分为4组。

  1. 非事务(50个表)-表,如部门,指定等,有时由管理员更新(100000读:1写比和1写/月)
  2. 较少的交易(50个表)-设置、产品、税率等表,这些表读得多,插入的次数少,但每天都会写(1000读:1写比和1写/日)
  3. 事务性(50个表) -tables,如订单、收据等,它们的写入和读取几乎相等(10读:1写1写/小时)
  4. 重事务(50个表)-任务、历史等表,这些表被编写得更多,读取更少,但服务和报告却使用它们(1读:1写和1写/分钟)

我正在使用hibernate,struts2和spring,并寻找缓存策略,以获得最佳的性能和效率。

如果您观察到我在表中有更多的数据是编写和读取最多的,那么将它们缓存在更关键的位置。

我可以缓存组4表吗?如果是,怎么做?

我可以缓存组3表吗?如果是,怎么做?

我可以缓存组2表吗?如果是,怎么做?

我可以缓存组1表吗?如果是,怎么做?

某些表可以在内存数据库中使用吗?

在某些情况下会帮助我吗?什么案子?

我最终想要的是从内存数据库中进行快速读取访问,随着数据库的变化,这将更新我的内存数据库。例如,我有产品列表,订单列表在内存中,但是当任何新产品或订单被添加时,这个列表必须自己重新加载。通常,所有的数据都是从内存中的数据库中读取的,而所有这些数据都是通过触发器将数据库写入到更新列表或列表项的.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-18 12:46:39

让我们从缓存的经验规则开始,

缓存非事务性数据,这些非事务性数据被频繁读取,很少更改

Hibernate允许您非常安全地到达那里。从这一点出发,即使仍然可以使用缓存,也不建议使用缓存,因为您可能会遇到它的多个问题。因此,最好谨慎行事。看看下面的文章列表,它会给你更多的洞察力。

  1. Hibernate:真正理解二级缓存和查询缓存。
  2. 理解Hibernate中的缓存-第二级缓存
  3. 提高Hibernate的性能

因此,当我们将此规则应用于您的场景时,只有第一组应该被缓存。首先,测量您的应用程序的性能改进。如果情况良好,也可以考虑缓存第二个组。不建议缓存事务性表,因此排除了set 3和4。

票数 4
EN

Stack Overflow用户

发布于 2012-05-16 09:54:21

虽然ManuPk已经以非常详细的方式回答了这个问题,但我只想添加一些东西,Hibernate提供了一个本地InProc缓存,不能在多服务器环境中使用。因此,在峰值加载时间期间,如果响应时间不好,并且您认为性能是一个问题,则最好使用2级缓存。因为它允许使用NHibernate的应用程序现在扩展到多服务器环境,并消除任何数据库瓶颈。请阅读下面的文章以获得进一步的参考,尽管它是关于NHibernate(.NET)的,但是它将解释L1和L2缓存的概念。

二级缓存,接受下一级的性能。

您可以使用NCache作为二级缓存,因为它现在与Java和.NET应用程序完全兼容。干杯

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10207689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档