如何更好的进行ADO.NET连接池连接

ADO.NET连接池是通过内部机制组成的。为了提高它的性能,于是就用了ADO.NET连接池,这样每个请求就不必都创建一个连接,接下来认证,然后执行SQL,在通过连接字符串创建SqlConnection对象时,创建了连接池。其连接字符串的格式如下:

 
 
  1. Data Source=127.0.0.1;Initial Catalog=pub;
  2. Persist Security Info=True;User ID=sa;password=sa;
  3. Pooling=True;Min Pool Size=10;Max Pool Size=200;timeout=60 

(1)默认情况下,连接字符串中Pooling属性为True。如果使用连接池,在创建连接对象时,应该使用同一个连接字符串。ADO.net允许创建多个连接池,并且每个池都与不同的连接字符串关联,打开新连接时,如果连接字符串并非与现有池完全匹配,将创建一个新池。如果 MinPoolSize 在连接字符串中未指定或指定为零,池中的连接将在一段时间不活动后关闭。但是,如果指定的 MinPoolSize 大于零,在 AppDomain 被卸载并且进程结束之前,连接池不会被破坏。非活动或空池的维护只需要最少的系统开销。

(2)添加连接

连接池是为每个唯一的连接字符串创建的。当创建一个池后,将创建多个连接对象并将其添加到该池中,以满足最小池大小的要求。连接根据需要添加到池中,但是不能超过指定的***池大小(默认值为 100)。连接在关闭或断开时释放回池中。连接池进程通过在连接释放回池中时重新分配连接,来满足这些连接请求。如果已达到***池大小且不存在可用的连接,则该请求将会排队。然后,池进程尝试重新建立任何连接,直到到达超时时间(默认值为 15 秒)。如果池进程在连接超时之前无法满足请求,将引发异常。#t#

(3)移除连接

如果连接长时间空闲,或池进程检测到与服务器的连接已断开,连接池进程会将该连接从池中移除。在使用完连接时一定要关闭连接,以便连接可以返回池。要关闭连接,可以使用 Connection 对象的 Close 或 Dispose 方法,也可以通过在 C# 的 using 语句中。

(4)清除池

ADO.NET 2.0 引入了两种新的方法来清除池:ClearAllPools 和 ClearPool。ClearAllPools 清除指定提供程序的连接池,ClearPool 清除与特定连接关联的ADO.NET连接池

(5)事务支持

连接是根据事务上下文来从池中取出并进行分配的。除非在连接字符串中指定了 Enlist=false,否则ADO.NET连接池将确保连接在 Current 上下文中登记。如果连接使用登记的 System.Transactions 事务关闭并返回到池中,连接将保留在池中,以便使用相同 System.Transactions 事务对该连接池的下一次请求将返回相同的连接(如果可用)。如果发出这样的请求,而没有可用的池连接,则会从池的非事务性部分取出一个连接并登记。如果在池的每个区域都没有可用的连接,则会创建一个新的连接并登记。

分享名称:如何更好的进行ADO.NET连接池连接
文章URL:http://www.shufengxianlan.com/qtweb/news20/379770.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联