【问题标题】:NHibernate best practices (Query cache with much static data)NHibernate 最佳实践(使用大量静态数据查询缓存)
【发布时间】:2010-06-28 13:38:14
【问题描述】:

我们有一种情况,我们觉得我们没有充分利用 NHibernate 的功能,这会降低性能。对于这个问题,实际情况简化为“有帖子的博客”示例。

一个博客站点,每个用户都可以拥有自己的博客,其中包含任意数量的帖子。因此,有一个用以下列定义的帖子表:

id, blog_id, post_title, post_contents

大多数博客很少更新,而少数是“类似推特”且经常更新的博客。读比写多。

每个博客的首页显示最新的 5 个条目。

SELECT TOP 5 * FROM blog_posts WHERE blog_id = ?

这将导致许多元素同时被放置在二级缓存和查询缓存中。

我们的问题是,99% 以上的博客的缓存查询结果被破坏了,因为很少有博客被频繁更新。

其他人通常如何解决这个问题?最佳做法是什么?

【问题讨论】:

  • 除非您在查询数据库之前知道哪些博客更新频繁(“类似推特”),否则我认为很难设计一种方法来仅缓存更新频率较低的博客的结果。 ..
  • 不幸的是,这只能在运行时确定。我正在考虑在逻辑代码中拥有一个博客->帖子的静态字典,并在添加/删除条目时简单地维护它(当然,使用适当的锁定)。但是,如果有朝一日该网站将托管在多台服务器上,这只会导致问题。

标签: nhibernate caching query-cache


【解决方案1】:

这是一个 ASP.NET 应用程序吗?对于这种类型的应用程序,我会在 NHibernate 的二级缓存之前研究 ASP.NET 的页面输出缓存功能。

【讨论】:

  • 我会调查并回复
猜你喜欢
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
相关资源
最近更新 更多