public async Task BulkInsert(List<WagerInfo> wagers)
{
var tasks = wagers.Select(async x => await insert(x));
await Task.WhenAll(tasks);
}
private Task insert(WagerInfo wager)
{
var sw = new Stopwatch();
sw.Start();
using (var db = new DBContext())
{
db.Wagers.Add(wager);
await db.SaveChangesAsync();
}
sw.Stop();
log("save one record spent : " + sw.Elapsed);
}
这是插入记录的简单代码。多插入使用异步等待
但日志显示保存的一条记录有时会花费超过1秒。
保存一个记录花费:00:00:00.0180819
保存一个记录花费:00:00:00.0239751
保存一个记录花费:00:00:00.0089301
保存一个记录花费:00:00:00.0116161
保存一个记录花费:00:00:00.0736537
保存Ø NE记录花费:00:00:00.0711155
保存一个记录花费:00:00:03.1613426
保存一个记录花费:00:00:03.1703909
保存一个记录花费:00:00: 03.1727551
保存一个记录花费:00:00:07.8156325
保存一个记录花费:00:00:07.8137410
保存一个记录花费:00:0 0:07.8179925
保存一个记录花费:00:00:00.0079545
保存一个记录花费:00:00:00.0074952
但我的DBA说,他不赶执行的任何警报时间超过4秒。
为什么有一些记录插入超过1秒?
如果我更改插入方法ado.net会更好?
有问题与连接池的设置。由于它是获得竞争等待,您登录的连接池是一个补充说,时间到SQL执行时间...记录时间一旦你有连接.... –
谢谢你的提示!我会尝试。 – user1485954