gpt4 book ai didi

c# - 保持 sql 连接打开可以吗?

转载 作者:太空狗 更新时间:2023-10-30 00:16:27 25 4
gpt4 key购买 nike

我正在通过 com 端口连续接收数据并进行一些解码。解码完成后,我必须将结果存储在 sql 数据库中。我在想,因为解码完成(在一个 while 循环中总是运行)每秒几十次,如果明智地打开和关闭与 sql server 的连接,数据需要每秒存储到数据库中几十次每个 while 循环或只是保持打开状态并继续将数据写入数据库。首先这可能吗?其次,如果连接保持打开状态,第三方应用程序或计算机是否可以同时访问数据库并在我的程序存储数据时读取数据?

最佳答案

一个数据库支持多个并发连接,所以是的,在这种情况下让数据库连接保持打开状态是非常可行的 - 如果您有一个长时间运行的查询导致行/表锁定,您只会锁定其他连接。完成后关闭连接即可。

还要考虑大多数数据库(即 SQL Server)使用 connection pooling在内部,因此即使您关闭了一个数据库连接,它也只是返回到池中,并没有物理关闭——池管理物理数据库连接——这会带来更好的性能,因此快速打开/关闭连接的影响会降低。

来自 MSDN :

Connection pooling reduces the number of times that new connections must be opened. The pooler maintains ownership of the physical connection. It manages connections by keeping alive a set of active connections for each given connection configuration. Whenever a user calls Open on a connection, the pooler looks for an available connection in the pool. If a pooled connection is available, it returns it to the caller instead of opening a new connection. When the application calls Close on the connection, the pooler returns it to the pooled set of active connections instead of closing it. Once the connection is returned to the pool, it is ready to be reused on the next Open call.

关于c# - 保持 sql 连接打开可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7072583/

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