1

查询缓存如何工作以及它如何提高 nHibernate 的性能?

4

3 回答 3

5

当查询被缓存时,NHibernate 将缓存查询产生的实体的 ID。

非常重要的是,它不缓存实体本身——只缓存它们的 ID。这意味着您几乎肯定希望确保这些实体也设置为可在您的二级缓存中缓存。否则,NHiberate 将从查询缓存中获取实体的 ID,但随后会被迫去数据库获取实际的实体。这可能比首先访问数据库更昂贵!

同样重要的是:查询会根据其确切的 SQL 和参数值进行缓存。其中任何一个的任何差异都将意味着数据库将受到影响。因此,您可能只想缓存那些输入变化不大的查询。

于 2010-03-02T19:35:08.027 回答
2

当您启用缓存时,nHibernate 将在您执行查询时将查询结果存储在内部某处。当您再次尝试使用 SAME 参数执行查询时,它将从缓存中获取结果,而不是从数据库中获取结果,当然它要快得多!但要注意其他应用程序可以在后台修改数据库!但是 nHibernate 可以更新缓存。

于 2010-03-02T17:36:02.217 回答
0

通过使用它,nHibernate 不需要访问它访问缓存中的数据存储。

于 2010-03-02T17:30:14.753 回答