この記事を読んだ後、私は 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 回の挿入/秒です。ブログが毎秒 45,000 の挿入を達成していたことを考えると、悪くはありませんが、素晴らしいとも言えません。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();