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