Вставка сессий без статических данных в NHibernate происходит медленно

Вот уже несколько дней я работаю над улучшением производительности NHibernate Insert.

Я читал во многих постах (например, этот), что stateless session может вставлять около 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
{
    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();
    }
}

Я что-то упускаю? Есть идеи, как ускорить вставку?

enter image description here

Сгенерированные запросы будут такими же, как ниже :

enter image description here

12
задан marc_s 19 December 2011 в 15:19
поделиться