gpt4 book ai didi

performance - 使用 Dapper 进行批量插入花费的时间比预期的要长

转载 作者:行者123 更新时间:2023-12-03 05:35:54 25 4
gpt4 key购买 nike

阅读后this article我决定仔细研究一下我使用 Dapper 的方式。

我在空数据库上运行此代码

var members = new List<Member>();
for (int i = 0; i < 50000; i++)
{
members.Add(new Member()
{
Username = i.toString(),
IsActive = true
});
}

using (var scope = new TransactionScope())
{
connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members);

scope.Complete();
}

大约花了20秒。即每秒 2500 次插入。不错,但考虑到博客达到了 45k 插入/秒,也不算太好。在 Dapper 中是否有更有效的方法来做到这一点?

此外,作为旁注,通过 Visual Studio 调试器运行此代码需要超过 3 分钟!我认为调试器会减慢速度,但我真的很惊讶看到这么多.

更新

所以这个

using (var scope = new TransactionScope())
{
connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members);

scope.Complete();
}

还有这个

    connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members);

两者都花费了 20 秒。

但这花了 4 秒!

SqlTransaction trans = connection.BeginTransaction();

connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members, transaction: trans);

trans.Commit();

最佳答案

使用这种方法,我能实现的最好成绩是 4 秒内记录 50k 条记录

SqlTransaction trans = connection.BeginTransaction();

connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members, transaction: trans);

trans.Commit();

关于performance - 使用 Dapper 进行批量插入花费的时间比预期的要长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10689779/

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