前进中的蜗牛

番茄大叔

水滴穿石,非一日之功;没有量变,何来质变。

数据库连接池

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

数据库连接池

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

连接的泄露

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

  1. 除非使用CommandBehavior.CloseConnection作为ExectuReader参数,否则Close DataReader不会Close关联的连接注意
  2. DataAdapterFillUpdate方法会自动打开和关闭连接。但是如果连接之前已经打开,其不会自动关闭。
posted @   LoveTomato  阅读(128)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示