NHibernate Profiler - 缓存的实体

时间:2011-05-18 08:20:10

标签: c# asp.net nhibernate profiler

我刚刚为我的解决方案中的某些实体实现了SysCache2并激活了缓存。 一切都很好,但我确实有一个问题:

有时,当我浏览特定页面时,NHibernate Profiler会显示正在获取的大量缓存实体。几百个缓存实体应该是可以使用的相当数量,但有时它最多可达3000-5000。见下图。

在这种情况下,是否真的从缓存中提取了5002个实体,或者NHibernate Profiler中是否有错误打印?

加载方面,一切似乎都没问题。页面请求已完成,但分析器会不断计算越来越多的缓存实体。

任何人都有类似的经历,或者这种情况真的发生过吗?

NHibernate Profiler Cache

1 个答案:

答案 0 :(得分:1)

嗯,它确实取得了所有条目。此外,您的屏幕截图已被裁剪,但我假设您正在接收来自NHProf的警报,指出缓存调用太多。

NH有两种不同类型的缓存:查询缓存和实体缓存。查询缓存仅存储由查询产生的项的标识(即,没有数据)。然后NH必须通过ID从实体缓存中单独获取项目。

更多信息:http://ayende.com/blog/3112/nhibernate-and-the-second-level-cache-tips

请注意,这可能会影响Web服务器的性能。我有与你完全相同的情况,并且有更好的结果禁用这些实体的二级缓存。

此外,由于appender和NHProf之间存在一些延迟,它甚至在页面加载后仍会显示新条目。 appender将所有日志发送到NHProf,它需要一些时间来绘制所有信息。