数据库连接池

.Net开发中通过ADO.NET数据提供程序访问数据库。在接触数据库连接DbConnection时就被警告:“晚打开,早释放”。但连接的打开与释放做了些什么呢?本片给自己解惑。

数据库连接池

数据库连接:连接到数据库服务器是应用程序中耗费大量资源且相对较慢的操作。包括建立物理通道、与服务器进行初次握手、分析连接字符串信息、对连接进行身份验证、运行检查等等。为了避免这种反复操作ADO.NET提供了连接池。 连接池是根据连接字符串创建的
Open连接池会查找可用的连接返回给用户
Close将连接返回到连接池

连接的泄露

当连接只OpenCloseDispose时会造成该连接泄露,一直存在切无法使用,次数多了会报连接池内无可用的连接bug。还用两种情况会造成连接“泄露”。

  1. 除非使用CommandBehavior.CloseConnection作为ExectuReader参数,否则Close DataReader不会Close关联的连接注意
  2. DataAdapterFillUpdate方法会自动打开和关闭连接。但是如果连接之前已经打开,其不会自动关闭。
原文地址:https://www.cnblogs.com/LoveTomato/p/9118203.html