我正在做一些涉及将一批记录插入 Sql 数据库的工作。批处理的大小会有所不同,但为了争论,我们可以说每 5 秒有 5000 条记录。不过可能会少一些。多个进程将写入该表,没有任何内容从中读取。

我在快速测试中注意到的是,围绕整个批量插入使用 SqlTransaction 似乎可以提高性能。

例如

SqlTransaction trans = Connection.BeginTransaction()
myStoredProc.Transaction = trans;
sampleData.ForEach(ExecuteNonQueryAgainstDB);
transaction.Commit();

我对能够回滚我的更改不感兴趣,所以我不会真正考虑使用事务,除非它似乎可以提高性能。如果我删除此事务代码,我的插入时间将从 300 毫秒变为大约 800 毫秒!

这是什么逻辑?因为我的理解是事务仍然将数据写入数据库,但在提交之前锁定记录。我原以为这会有开销......

我正在寻找的是执行此插入操作的最快方法。

最佳答案

如果您正在寻找插入/加载数据的快速方法,请查看 ojota

关于c# - ADO.net SqlTransaction 提高性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5091084/

10-13 08:13