gpt4 book ai didi

c# - ADO.net SqlTransaction 提高性能

转载 作者:行者123 更新时间:2023-11-30 13:12:32 26 4
gpt4 key购买 nike

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

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

例如

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

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

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

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

最佳答案

提交是花费时间的。如果没有显式事务,则每个执行的查询都有一个事务。使用显式事务,不会为您的查询创建额外的事务。因此,您有一笔交易与多笔交易。这就是性能改进的来源。

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

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