gpt4 book ai didi

c# - .NET 中的 SqlConnection——我怎样才能最好地利用连接池?

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

我读到 .NET 使用连接池。

例如,如果我用相同的连接字符串实例化一组 SqlConnection 对象,那么在内部 .NET 将知道使用相同的连接。

这是正确的吗?

此外,在基于网络的大型应用程序中,有没有关于利用这种“力量”的最佳方式的提示?

最佳答案

在 Web 应用程序和 SQL Server 之间建立 TCP 连接可能是一项代价高昂的操作。连接池允许与数据库的连接重新用于后续数据请求。不是在每个请求上都建立一个新的 TCP 连接,而是仅当连接池中没有连接时才建立一个新连接。当连接关闭时,它会返回到池中,并在那里保持与数据库的连接,而不是完全断开 TCP 连接。

总是在完成连接后关闭它们。无论有人对 Microsoft .NET Framework 中的垃圾回收有何评论,在您完成连接后,始终在您的连接上显式调用 Close 或 Dispose。不要相信公共(public)语言运行时 (CLR) 会为您清理和关闭连接。 CLR 最终会销毁该类并强制关闭连接,但您无法保证对象上的垃圾回收何时真正发生。

要以最佳方式使用连接池,需要遵守一些规则。首先,打开连接,完成工作,然后关闭连接。如果必须的话,可以在每个请求上多次打开和关闭连接,而不是保持连接打开并通过不同的方法传递它。其次,使用相同的连接字符串(如果使用集成身份验证,则使用相同的线程标识)。如果您不使用相同的连接字符串,例如根据登录用户自定义连接字符串,您将不会获得连接池提供的相同优化值。如果您在模拟大量用户的同时使用集成身份验证,则您的池化效率也会大大降低。

在尝试跟踪与连接池相关的任何性能问题时,.NET CLR 数据性能计数器非常有用。

http://msdn.microsoft.com/en-us/magazine/cc163854.aspx

关于c# - .NET 中的 SqlConnection——我怎样才能最好地利用连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1052149/

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