NHibernateの挿入パフォーマンスの改善に取り組んでいます。NHibernateのステートレスセッションの挿入が遅い
私はしかし、それは1243件のレコードを挿入することができることを最高の時間がのためのより9秒です.... ステートレスセッションは、毎秒1000〜2000年、レコードのように挿入できること(例えばthis oneなど)の多くの記事で読みました私:
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();
}
}
私に何かが不足していますか? インサートをスピードアップする方法はありますか?
生成されたクエリは以下と同じになります。
はい、挿入は個別のクエリです。 –
時間が問題となるバルクインサートの場合、私は実際には 'SQLBulkCopy'ソリューションのために行きます。 – Rippo