gpt4 book ai didi

c# - 跨多个线程使用静态数据库连接是最佳做法吗?

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

关于多线程应用程序的最佳实践是(1)使用到 SQL 数据库的单个共享静态连接,还是(2 ) 为每个 BackgroundWorker 打开自己唯一的数据库连接?

我显然假设每个线程都需要连接到同一个数据库。

使用类型会影响答案吗?例如,如果每个线程只运行 SELECT 语句怎么办?或者如果某些线程也可以执行 UPDATE 语句?还是用法并没有真正产生影响,无论如何您都应该始终/永远不要共享静态连接?

最佳答案

正如您对问题的评论所讨论的那样。最佳做法是将连接处理留给 ADO.Net,因为它包含连接池控制,因此您只需在每次需要执行一些 SQL 时打开一个连接,然后关闭它。连接池不会立即关闭连接,因为它会在可配置的时间内保持打开状态,以便能够将其传递给请求打开新连接的其他线程。此外,连接不是线程安全的,因此每个线程都应该有自己的连接,但 ADO.Net 会再次处理这个问题。

如果您想了解有关连接池的更多信息,我建议阅读以下 MSDN 文章:http://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx

我还强烈建议您在此处阅读 Microsoft 的 ado .net 最佳实践:http://msdn.microsoft.com/en-us/library/ms971481.aspx

其他一些文章:

关于c# - 跨多个线程使用静态数据库连接是最佳做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24768271/

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