数据库连接池
.Net开发中通过ADO.NET数据提供程序访问数据库。在接触数据库连接DbConnection
时就被警告:“晚打开,早释放”。但连接的打开与释放做了些什么呢?本片给自己解惑。
数据库连接池
数据库连接:连接到数据库服务器是应用程序中耗费大量资源且相对较慢的操作。包括建立物理通道、与服务器进行初次握手、分析连接字符串信息、对连接进行身份验证、运行检查等等。为了避免这种反复操作ADO.NET提供了连接池。 连接池是根据连接字符串创建的
Open
连接池会查找可用的连接返回给用户
Close
将连接返回到连接池
连接的泄露
当连接只Open
不Close
或Dispose
时会造成该连接泄露,一直存在切无法使用,次数多了会报连接池内无可用的连接bug
。还用两种情况会造成连接“泄露”。
- 除非使用
CommandBehavior.CloseConnection
作为ExectuReader
参数,否则Close DataReader不会Close关联的连接注意 DataAdapter
的Fill
和Update
方法会自动打开和关闭连接。但是如果连接之前已经打开,其不会自动关闭。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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)