gpt4 book ai didi

NHibernate 性能插入

转载 作者:行者123 更新时间:2023-12-04 12:44:23 26 4
gpt4 key购买 nike

我正在用 nhibernate 做一些测试,我正在修改 batch_size 以获得批量插入。

我正在使用 mssql2005 并使用 Northwind 数据库。
我创建了 1000 个对象并将它们插入到数据库中。我已将 batch_size 的值从 5 更改为 100,但发现性能没有变化。我得到了大约 300 毫秒的值。使用 sql 探查器,我看到服务器端有 1000 条 sql 插入语句。请帮忙。

应用程序配置文件

 <property name="adonet.batch_size">10</property>

代码
    public bool MyTestAddition(IList<Supplier> SupplierList)
{
var SupplierList_ = SupplierList;
var stopwatch = new Stopwatch();
stopwatch.Start();
using (ISession session = dataManager.OpenSession())
{
int counter = 0;
using (ITransaction transaction = session.BeginTransaction())
{

foreach (var supplier in SupplierList_)
{
session.Save(supplier);
}
transaction.Commit();
}

}
stopwatch.Stop();
Console.WriteLine(string.Format("{0} milliseconds. {1} items added",
stopwatch.ElapsedMilliseconds,
SupplierList_.Count));
return true;
}

最佳答案

下面是一篇关于 Hibernate 批处理的好文章,它是 NHibernate 的基础并紧随其后:

http://relation.to/Bloggers/BatchProcessingInHibernate

如您所见,建议的操作是在配置中设置合理的批量大小,您已经完成了,但也调用 session.flush()session.clear()每 20 条左右的记录。

我们自己采用了这种方法,现在可以在几秒钟内创建和保存 1000 多个对象。

关于NHibernate 性能插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/286697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com