繁体   English   中英

nHibernate多个事务正在放缓

[英]nHibernate multiple transactions are slowing down

以前,我在一个事务中进行了500次操作,但持续时间太长,因此我不得不在foreach块中将其更改为500个事务。

我正在检查进行每个事务的时间(我使用秒表),并且我注意到每个foreach循环(每个新事务)都比上一个循环更长。 它从约80毫秒增加到约400。 我的代码:

foreach (var single in data)
{
    using (var tran = _session.BeginTransaction())
    {
       // operations with "single" usage - _session.Save() or _session.Update()
       //...
       tran.Commit();
    }
}

我究竟做错了什么? 我应该处理掉tran.Commit()之后的东西吗?

Nhibernate跟踪会话中每个实体的状态,因此每次循环时都需要检查越来越多的实体。

通常,此问题的答案是为每个事务创建一个新会话。

这里的问题是您有500个小事务,这是使用ORM的一种“俏皮”方式,通常被认为是一种反模式。

从NHibernate 3.2开始,批处理已在内部实现,我建议您在NHibernate中查看批处理更新

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM