设置:
我正在用 C# 创建一个 .NET WinForms 应用程序,以使我们的技术支持人员能够轻松地针对我们产品的 SQL Server 2005 数据库执行常见任务。该应用程序正在使用 ADO.NET ( SqlConnection
) 连接到数据库。开发此应用程序时需要考虑的一个问题是,每次启动任务(查询)时,尽量减少连接/重新连接到数据库的开销。据我了解,造成这种开销的主要原因是数据库具有AutoClose属性设置为“真”。我很想改变这一点,但不幸的是它不在我的控制之下。我也知道创建数据库连接无论如何都会涉及一些开销。我有一个应用程序的工作实现,它在应用程序的整个生命周期中保持一个连接(除非它之前以某种方式关闭)。然后我偶然发现了一篇关于ADO.NET 中的连接池的 MSDN 文章。
阅读文章(以及此处、此处和此处的其他问题/答案)后,即使我的应用程序已正确处理其SqlConnection
对象,ADO.NET 连接池似乎仍将保持与数据库的连接。连接将保留在池中并且可以重复使用,直到它空闲一段时间或以其他方式中断。因此,我在应用程序中维护单个连接的工作似乎是不必要的,而且肯定比SqlConnection
每次需要时简单地创建/处置 a 更危险。
问题:
将 ADO.NET 连接池与“AutoClose”设置为“true”的 SQL Server 数据库一起使用时会出现什么影响?
我意识到,当我描述我认为连接池在幕后工作的方式时,我可能过于简单化了,但除此之外,我的理解准确吗?如果不是,哪里需要修正?