【问题标题】:use_reflection_optimizer with nHibernate使用 nHibernate 的反射优化器
【发布时间】:2012-02-08 19:42:55
【问题描述】:

我正在处理集合水合期间的 nHibernate 性能问题。 nHibernate 生成的查询在 1-3 秒内完成,但仅 50-90 个对象的水合需要另外 7-9 秒。从一个结果集中合并了多层连接的对象,并且数据不会重叠太多以从缓存中受益。取出 nHibernate 是不可能的,我只是想弄清楚如何更快地补水。

我研究的一个想法是拆分 nHibernate 代码以使用命名查询并控制不同层中的对象如何被水合。我还找到了 nHibernate 的 use_reflection_optimizer 参数。虽然看起来很棒,但几乎没有任何关于使用的信息。

1) 默认情况下是否启用反射优化器?我使用的是.NET 4.0,所以似乎应该默认开启,但我找不到明确的答案。

2) 如果 use_reflection_optimizer 默认不是“true”,那么我该如何启用它?它通过 web.config 对我不起作用,我正在阅读它应该通过代码或通过配置中的部分来完成。有人可以举个例子吗?

3) 是否有任何其他建议可以加快我的对象的水合作用?

【问题讨论】:

  • 您尝试过无状态会话吗?也就是说,如果这些数据可以被视为只读

标签: nhibernate


【解决方案1】:

use_reflection_optimizer 默认启用,它的作用是在启动时生成许多运行时需要的反射功能,而不是在第一次接触某些对象时。它使启动时间更长,但从长远来看会更好。

我认为即使没有反射优化器,NHibernate 也会将命名的 HQL 查询转换为 SQL。

现在,关于该查询的性能,您能分享一些代码吗?渴望获取/加入帮助吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 2011-06-18
    • 2010-09-20
    • 2014-04-04
    • 1970-01-01
    相关资源
    最近更新 更多