ADO.net 连接池

什么是连接池:
打开数据存储区的连接时提高性能的一种机制。
上面书面的不是很形象,可以理解为暂时托管数据库连接的地方。等你下次需要的时候直接上那里拿。

连接池存在的意义:
应用程序往往使用一个或有限的几个连接配置,程序的操作导致许多相同的数据库连接操作重复执行。

使用连接池为我们省略了哪些步骤:
进行数据操作,往往是如下几个步骤,连接到数据库服务器,操作数据,关闭连接,其中连接到数据库服务器,和关闭连接每次操作都是相同的,当数据读取频繁的时候这种成本尤其高昂。
当连接数据库时,需要建立物理通道(如创建套接字,命名管道,服务器身份验证,事务登记,分析连接字符串信息)使用连接池则可以省略每次操作的上述步骤。

ADO.NET如何分配连接池:
ADO.NET为每个应用程序运行时配置一个或多个连接池(每个连接池对应一个不同的连接配置(连接字符串,凭据))

如何清理连接池:
连接池进程定期扫描池
把没有显式调用close或者dispose关闭的空闲连接,重新标志为“自由连接”(方便需要的连接请求调用)
把已经与数据库服务器断开的连接清除出连接池。
在ADO.NET2.0中的提供了两个新方法
ClearAllPools 清楚给定提供程序的连接池的所有“自由连接”
ClearPool 释放特定连接对象的“自由连接”(活动连接不受影响)

默认情况:
ADO.NET为每个连接池设定的默认连接数是100。
ADO.NET数据库连接默认启用连接池。

如何禁用连接池:
1.在连接字符串中设置 Pooling=false
2.设置SqlConnectionStringBuilder的Pooling属性为false

强制使用新连接池:
最简单的方法,在连接字符串后面加一个空格(目的改变连接字符串)

为什么会发生连接池溢出:
比如默认情况下每个连接池有100个最大连接数。
每个数据库请求需要使用一个连接,如果池中的连接都在使用(活动连接),并且连接数没有达到最大连接数,则可以创建新连接,如果池中活动连接数已经达到最大连接数,则请求进入请求队列等待,当等到超过等待时间(ConnectionTimeout )时则发生溢出错误(InvalidOperationException )。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值