Đó là một vài ngày mà tôi đang làm việc để cải thiện hiệu suất Chèn NHibernate.Chèn phiên không trạng thái của NHibernate chậm
Tôi muốn đọc nhiều bài viết (như this one) mà stateless session có thể chèn như 1000 ~ 2000 hồ sơ mỗi giây .... Tuy nhiên, thời gian tốt nhất mà nó có thể chèn 1243 hồ sơ là hơn 9 giây cho tôi:
var sessionFactory = new NHibernateConfiguration().CreateSessionFactory();
using (IStatelessSession statelessSession = sessionFactory.OpenStatelessSession())
{
statelessSession.SetBatchSize(adjustmentValues.Count);
foreach (var adj in adjustmentValues)
statelessSession.Insert(adj);
}
lớp:
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; }
}
Bản đồ các lớp:
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();
}
}
Tôi có thiếu gì đó không? Bất kỳ ý tưởng nào để tăng tốc độ chèn?
Các truy vấn được tạo ra sẽ được giống như dưới đây:
có, chèn là các truy vấn riêng biệt. –
Đối với chèn số lượng lớn mà thời gian quan trọng thì tôi thực sự sẽ đi cho giải pháp 'SQLBulkCopy'. – Rippo