我正在努力改進NHibernate插入性能已經有好幾天了。NHibernate的無狀態會話插入很慢
我在很多職位(如this one)是無狀態會話可以插入像1000〜2000記錄每秒....但是,它可以插入1243條記錄的最佳時間是超過9秒閱讀我:
var sessionFactory = new NHibernateConfiguration().CreateSessionFactory();
using (IStatelessSession statelessSession = sessionFactory.OpenStatelessSession())
{
statelessSession.SetBatchSize(adjustmentValues.Count);
foreach (var adj in adjustmentValues)
statelessSession.Insert(adj);
}
類:
public partial class AdjustmentValue : PersistentObject, IFinancialValue
{
public virtual double Amount { get; set; }
public virtual bool HasManualValue { get; set; }
public virtual bool HasScaleValue { get; set; }
public virtual string Formula { get; set; }
public virtual DateTime IssueDate { get; set; }
public virtual CompanyTopic CompanyTopic { get; set; }
}
地圖類:
public class AdjustmentValueMap : ClassMap<AdjustmentValue>
{
public AdjustmentValueMap()
{
Id(P => P.Id);
Map(p => p.Amount);
Map(p => p.IssueDate);
Map(p => p.HasManualValue);
Map(p => p.HasScaleValue);
Map(p => p.Formula);
References(p => p.CompanyTopic)
.Fetch.Join();
}
}
我錯過了什麼嗎? 任何想法如何加快插入?
生成的查詢將是相同的,如下:
是的,插入是單獨的查詢。 – 2011-12-19 16:02:34
對於時間很重要的批量插入,我真的會去'SQLBulkCopy'解決方案。 – Rippo 2011-12-20 10:58:02