我们有一种情况,我们觉得我们没有充分利用 NHibernate 的功能,这会降低性能。对于这个问题,实际情况简化为“带有帖子的博客”示例。
一个博客站点,每个用户都可以拥有自己的博客,其中包含任意数量的帖子。因此,有一个用以下列定义的帖子表:
id, blog_id, post_title, post_contents
大多数博客很少更新,而少数是“类似推特”并经常更新。读比写多得多。
每个博客的首页显示最新的 5 个条目。
SELECT TOP 5 * FROM blog_posts WHERE blog_id = ?
这将导致许多元素被放置在二级缓存和查询缓存中。
我们的问题是,99%+ 读取的博客的缓存查询结果被破坏了,因为很少有博客被频繁更新。
你其他人通常如何解决这个问题?最佳实践是什么?