如何理解ADO.Net Team工作使用说明

开发 后端
本文向大家介绍ADO.Net Team,可能好多人还不了解ADO.Net Team,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

对于ADO.Net Team的推出。数据库读取技术也由原本的ADO进化为ADO.Net。技术人员和程序员大大的期盼,ADO.Net较ADO提供了更便捷的数据库读写能力以及优秀的性能。。。。

Connection Pool是ADO.Net一个用来提高性能的重要功能。但是对于Connection Pool的机制却很少有文档涉及,所以对于Connection Pool的排错,一直都是一个很棘手的问题。对于OLEDB以及ODBC, 连接池是由Driver决定的。对于Oracle的数据库,一般而言,8.0以上的版本都建议使用Oracle提供的ODP.Net。所以此文主要探讨一下ADO.Net Team

Connection Pool 是什么呢 ?
每当程序需要读写数据库的时候。Connection.Open()会使用ADO.Net Team,数据库会为程序建立一个连接,并且保持打开状态,此后程序就可以使用T-SQL语句来查询/更新数据库。当执行到Connection.Close()后,数据库就会关闭当前的连接。很好,一切看上去都是如此有条不紊。

但是如果我的程序需要不定时的打开和关闭连接,(比如说 ASP.Net 或是 Web Service ),例如当Http Request发送到服务器的时候、,我们需要打开Connection 然后使用Select* from Table 返回一个DataTable/DataSet给客户端/浏览器,然后关闭当前的Connection。那每次都Open/Close Connection 如此的频繁操作对于整个系统无疑就成了一种浪费。ADO.Net Team就给出了一个比较好地解决方法。将先前的Connection保存起来,当下一次需要打开连接的时候就将先前的Connection 交给下一个连接。这就是Connection Pool。#t#

Connection Pool 如何工作的?
首先当一个程序执行Connection.open()时候,ADO.Net Team就需要判断,此连接是否支持Connection Pool (Pooling 默认为True),如果指定为False, ADO.net就与数据库之间创建一个连接(为了避免混淆,所有数据库中的连接,都使用”连接”描述),然后返回给程序。如果指定为True,ADO.net就会根据ConnectString创建一个Connection Pool,然后向Connection Pool中填充Connection(所有.net程序中的连接,都使用”Connection”描述)。

填充多少个Connection由Min Pool Size (默认为0)属性来决定。例如如果指定为5,则ADO.net会一次与SQL数据库之间打开5个连接,然后将4个Connection,保存在Connection Pool中,1个Connection返回给程序。

当程序执行到Connection.close() 的时候。如果Pooling 为True,ADO.Net Team就把当前的Connection放到Connection Pool并且保持与数据库之间的连接。同时还会判断Connection Lifetime(默认为0)属性,0代表无限大,如果Connection存在的时间超过了Connection LifeTime,ADO.net就会关闭的Connection同时断开与数据库的连接,而不是重新保存到Connection Pool中。(这个设置主要用于群集的SQL 数据库中,达到负载平衡的目的)。如果Pooling指定为False,则直接断开与数据库之间的连接。

然后当下一次Connection.Open() 执行的时候,ADO.Net Team就会判断新的ConnectionString与之前保存在Connection Pool中的Connection的connectionString是否一致。(ADO.Net会将ConnectionString转成二进制流,所以也就是说,新的ConnectionString与保存在Connection Pool中的Connection的ConnectionString必须完全一致。

即使多加了一个空格,或是修改了ADO.Net Team中某些属性的次序都会让ADO.Net认为这是一个新的连接,而从新创建一个新的连接。所以如果您使用的UserID,Password的认证方式,修改了Password也会导致一个Connection,如果使用的是SQL的集成认证,就需要保存两个连接使用的是同一个)。

责任编辑:chenqingxiang 来源: Sina
相关推荐

2009-12-18 14:20:26

ADO.NET组件

2009-12-18 15:11:50

ADO.NET类

2009-12-21 14:55:49

ADO.NET对象

2009-12-22 10:43:48

ADO.NET类库

2009-12-18 13:52:39

ADO.NET设计器

2009-12-18 17:06:37

ADO.NET 数据库

2009-12-23 14:53:28

ADO.NET连接池

2009-12-29 16:33:35

ADO.Net Tea

2009-12-21 16:07:52

ADO.NET数据库

2009-12-21 14:55:49

ADO.NET类库

2009-12-22 16:03:34

ADO.NET Ent

2009-12-23 13:23:29

ADO.Net Sql

2009-12-23 09:14:52

ADO.NET连接池

2009-12-31 15:59:13

ADO.NET方案

2009-12-30 15:58:42

ADO.NET数据库编

2009-12-18 17:16:47

ADO.NET连接数据

2009-12-24 09:26:01

ADO.Net Tea

2009-12-21 14:39:09

ADO.NET技巧

2009-12-23 15:13:15

Ado.Net Syb

2009-12-30 15:21:55

ADO.NET访问
点赞
收藏

51CTO技术栈公众号