簡體   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