我有一个有200个表格的应用程序--分为4组。
我正在使用hibernate,struts2和spring,并寻找缓存策略,以获得最佳的性能和效率。
如果您观察到我在表中有更多的数据是编写和读取最多的,那么将它们缓存在更关键的位置。
我可以缓存组4表吗?如果是,怎么做?
我可以缓存组3表吗?如果是,怎么做?
我可以缓存组2表吗?如果是,怎么做?
我可以缓存组1表吗?如果是,怎么做?
某些表可以在内存数据库中使用吗?
在某些情况下会帮助我吗?什么案子?
我最终想要的是从内存数据库中进行快速读取访问,随着数据库的变化,这将更新我的内存数据库。例如,我有产品列表,订单列表在内存中,但是当任何新产品或订单被添加时,这个列表必须自己重新加载。通常,所有的数据都是从内存中的数据库中读取的,而所有这些数据都是通过触发器将数据库写入到更新列表或列表项的.。
发布于 2012-04-18 12:46:39
让我们从缓存的经验规则开始,
缓存非事务性数据,这些非事务性数据被频繁读取,很少更改。
Hibernate允许您非常安全地到达那里。从这一点出发,即使仍然可以使用缓存,也不建议使用缓存,因为您可能会遇到它的多个问题。因此,最好谨慎行事。看看下面的文章列表,它会给你更多的洞察力。
因此,当我们将此规则应用于您的场景时,只有第一组应该被缓存。首先,测量您的应用程序的性能改进。如果情况良好,也可以考虑缓存第二个组。不建议缓存事务性表,因此排除了set 3和4。
发布于 2012-05-16 09:54:21
虽然ManuPk已经以非常详细的方式回答了这个问题,但我只想添加一些东西,Hibernate提供了一个本地InProc缓存,不能在多服务器环境中使用。因此,在峰值加载时间期间,如果响应时间不好,并且您认为性能是一个问题,则最好使用2级缓存。因为它允许使用NHibernate的应用程序现在扩展到多服务器环境,并消除任何数据库瓶颈。请阅读下面的文章以获得进一步的参考,尽管它是关于NHibernate(.NET)的,但是它将解释L1和L2缓存的概念。
二级缓存,接受下一级的性能。
您可以使用NCache作为二级缓存,因为它现在与Java和.NET应用程序完全兼容。干杯
https://stackoverflow.com/questions/10207689
复制相似问题