这是关于Hibernate Caching的一个基本问题,但在继续之前,我必须确定。我以前在小项目中使用过query缓存,但现在我参与了一个大项目,所以如下所示:
在真正的大型项目(国家)中,您对何时在Hibernate中使用Query缓存有什么建议?
注:*平台为Struts2、Spring3、Hibernate、Java6 WAS6 *
发布于 2011-03-04 20:36:33
我认为您是指二级缓存,即跨越多个Hibernate会话的缓存。
通常,查询缓存用于大量或经常访问的查询,以减少应用程序访问数据库的频率。
我不确定您的问题是否包括实体缓存,但您肯定也应该进行调查。这个缓存包括单独的实体或它们的集合,而不管上下文(即具体的查询)。我想说它是最有益的缓存类型。
您的TPS或实体数量越大,使用这种缓存的好处就越大。当您遇到每个事务有几千个查询时,从缓存(通常是在RAM中)获取实体,而不是查询数据库和映射,可以节省大量宝贵的时间。
当你需要100%的最新(在线)结果时,要小心.
另请参阅:
改善性能在Hibernate文档。
发布于 2011-03-04 20:42:14
使用二级缓存时,当您的db关系r复杂时(在这种情况下,您知道每次命中db将是一项代价高昂的操作)。在这种情况下,使用缓存可以提高app的性能。
发布于 2011-03-04 20:53:43
我强烈推荐文章真正理解第二级和查询缓存。一般来说,缓存有很多好处,但也带来了许多复杂性,您应该有一个充分的理由进行缓存,并了解它会给您带来什么好处/风险。
请注意,仅打开查询缓存本身是不够的,您需要将事情标记为可缓存的,这里有一个解释。整篇文章都很好,并讨论了查询缓存在什么时候没有用。同样,请确保您有充分的理由在应用程序中启用查询缓存。
https://stackoverflow.com/questions/5198960
复制相似问题