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

开发 后端
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 事务对该连接池的下一次请求将返回相同的连接(如果可用)。如果发出这样的请求,而没有可用的池连接,则会从池的非事务性部分取出一个连接并登记。如果在池的每个区域都没有可用的连接,则会创建一个新的连接并登记。

责任编辑:chenqingxiang 来源: 机械工业出版社
相关推荐

2009-07-21 11:05:49

关闭ADO.NET连接

2009-11-03 16:51:04

ADO.NET连接池观

2009-12-23 09:01:15

ADO.NET连接池

2009-11-13 13:11:37

ADO.NET连接池

2009-11-11 14:04:14

ADO.NET连接池

2009-11-12 09:25:21

ADO.NET连接池

2009-12-23 14:53:28

ADO.NET连接池

2009-11-03 15:58:22

2009-12-24 09:49:02

ADO.Net连接池

2010-02-25 09:06:40

ADO.NET连接池

2009-12-23 09:14:52

ADO.NET连接池

2009-07-20 14:03:43

Ado.net连接池

2009-12-30 16:22:58

ADO.NET连接池

2009-12-25 15:38:12

ADO连接池

2009-12-29 13:46:50

ADO.NET类库

2009-06-26 14:41:48

ADO.NET

2010-01-04 16:18:13

ADO.NET连接池

2009-11-03 16:57:34

ADO.NET FAQ

2009-11-12 08:59:18

ADO.NET数据库连

2009-11-03 16:04:29

点赞
收藏

51CTO技术栈公众号