我刚刚实现了SysCache2,并为我的解决方案中的一些实体激活了缓存。一切都很正常,但我有一个问题:
有时,当im浏览特定页面时,NHibernate事件探查器显示正在获取的缓存实体数量非常多。几百个缓存实体应该是一个相当大的使用量,但有时会达到3000-5000个。请参见下图。
在这种情况下,是否真的从缓存中提取5002个实体,或者NHibernate事件探查器中是否存在打印错误?
从加载的角度来看,一切似乎都很好。页面请求已完成,但探查器仍在不断计数越来越多的缓存实体。
有没有人经历过类似的事情,或者这真的发生过?

发布于 2011-05-18 20:57:59
嗯,它真的获取了所有的条目。此外,你的截图被裁剪了,但我假设你收到了来自NHProf的警告,说有太多的缓存调用。
NH有两种不同类型的缓存:查询缓存和实体缓存。查询缓存仅存储由查询产生的项的标识(即,没有数据)。然后,NH必须通过ID从实体缓存中逐个获取项。
更多信息请访问:http://ayende.com/blog/3112/nhibernate-and-the-second-level-cache-tips
请注意,这可能会影响web服务器的性能。我遇到了与您完全相同的情况,并且为这些实体禁用二级缓存的效果更好。
此外,即使在页面加载之后,由于附加器和NHProf之间的一些延迟,它也会继续显示新条目。附加器将所有日志发送到NHProf,它需要一些时间来提取所有信息。
https://stackoverflow.com/questions/6041769
复制相似问题