整个应用程序的NHibernate批量大小 - 任何问题?

时间:2010-02-01 01:49:35

标签: nhibernate batch-file

如果我将NHibernate配置为20的批量大小,我是否可能在常规的非批量更新相关方案中遇到问题?

我的应用程序执行的大多数更新/插入都是一次性的。但在某些情况下,我正在进行大规模更新/插入,这将受益于批处理。我是否应该为这些配置使用不同的会话配置,或者您认为我可以安全地将批量大小留给整个应用程序?

我问的原因是,为批处理方案设置一个不同的会话是很麻烦的(因为这是一个带有每个请求会话的Web应用程序)。

1 个答案:

答案 0 :(得分:2)

NH documentation中,提到的批量更新的唯一不利之处是:

  

乐观并发检查可能是   因为ADO.NET 2.0没有受损   返回受影响的行数   批处理中的每个语句,只有   受影响的总行数   批次。

我不认为这对小批量来说是个问题。所以我怀疑更高的批量大小会对应用程序的正常运行产生负面影响。

但是,您应该考虑为批处理操作创建一个新会话。正常的NHibernate会话将是inefficient for batch updates/inserts,因为第一级缓存会跟踪每个对象。您可以通过定期执行session.Flush(); session.Clear();手动控制此操作,但可能更容易使用StatelessSession。