gpt4 book ai didi

C# 执行多条SQL语句

转载 作者:太空狗 更新时间:2023-10-29 20:34:02 24 4
gpt4 key购买 nike

我有一个存储更新语句的类。我无法在我的并行 for 循环中执行这些语句,因为这会导致死锁。

语句在循环完成后执行,在 100 行的情况下它工作正常。但某些场景会生成超过 100,000 的语句。在顺序循环中执行这些语句花费的时间太长。

我希望实现的是,在向类中添加 100 条语句后,我在单独的线程上执行这些语句,并清除语句变量,以便可以添加和执行下 100 条语句。

我是多线程新手。这是可以实现的吗?如果不是,我使用什么其他选项来减少执行时间。请注意,我无法更改语句逻辑,因为它还有许多其他因素。

让我进一步阐明我的情景。我拥有的那个表更像是一个日志表,用于跟踪传输到客户端的 sql 行,这样我就不会重新发送同一个对象两次。这是为了减少带宽使用,因为对象是通过 Internet 链接传输的。

最初,我一收到客户的回复就执行每条语句。当循环是连续的时,这很有效,但被证明太慢了。所以我选择使用并行循环。这是所有问题都出现的地方,因为几乎同时从同一个表中选择、插入和更新导致死锁。

所以我决定将语句保存在一个字符串列表中,以便稍后执行。

我尝试使用 string.join 将所有字符串转换为单个字符串,但这给了我系统内存不足异常。从而依次执行它们。现在传输需要 5 分钟,执行需要 30 分钟。所以我正在寻找解决方案..

最佳答案

因为这听起来像是您不断地不断将新内容插入到您的数据库中,所以您可以使用 SqlTransaction,只要语句可用,您就可以在其上执行语句。然后,您偶尔提交事务。

检查 MSDN有关如何使用它的示例。

编辑:另一方面,如果您要在一个堆中执行大量语句,请尽可能使用 SqlBulkCopy,如 LoztInSpace 所说。

关于C# 执行多条SQL语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16986326/

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