ADO.NET连接池FAQ

原创 2004年05月17日 17:43:00

 

摘要

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

连接池允许应用程序从连接池中获得一个连接并使用这个连接,而不需要为每一个连接请求重新建立一个连接。一旦一个新的连接被创建并且放置在连接池中,应用程序就可以重复使用这个连接而不必实施整个数据库连接创建过程。

 

当应用程序请求一个连接时,连接池为该应用程序分配一个连接而不是重新建立一个连接;当应用程序使用完连接后,该连接被归还给连接池而不是直接释放。

 

如何实现连接池

 

确保你每一次的连接使用相同的连接字符串(和连接池相同);只有连接字符串相同时连接池才会工作。如果连接字符串不相同,应用程序就不会使用连接池而是创建一个新的连接。

 

优点

 

       使用连接池的最主要的优点是性能。创建一个新的数据库连接所耗费的时间主要取决于网络的速度以及应用程序和数据库服务器的(网络)距离,而且这个过程通常是一个很耗时的过程。而采用数据库连接池后,数据库连接请求可以直接通过连接池满足而不需要为该请求重新连接、认证到数据库服务器,这样就节省了时间。

 

缺点

 

       数据库连接池中可能存在着多个没有被使用的连接一直连接着数据库(这意味着资源的浪费)。

 

技巧和提示

 

1.  当你需要数据库连接时才去创建连接池,而不是提前建立。一旦你使用完连接立即关闭它,不要等到垃圾收集器来处理它。

2.  在关闭数据库连接前确保关闭了所有用户定义的事务。

3.  不要关闭数据库中所有的连接,至少保证连接池中有一个连接可用。如果内存和其他资源是你必须首先考虑的问题,可以关闭所有的连接,然后在下一个请求到来时创建连接池。

 

连接池FAQ

 

1.  何时创建连接池?

当第一个连接请求到来时创建连接池;连接池的建立由数据库连接的连接字符创来决定。每一个连接池都与一个不同的连接字符串相关。当一个新的连接请求到来时如果连接字符串和连接池使用的字符串相同,就从连接池取出一个连接;如果不相同,就新建一个连接池。

 

2.  何时关闭连接池?

当连接池中的所有连接都已经关闭时关闭连接池。

 

3.  当连接池中的连接都已经用完,而有新的连接请求到来时会发生什么?

当连接池已经达到它的最大连接数目时,有新的连接请求到来时,新的连接请求将放置到连接队列中。当有连接释放给连接池时,连接池将新释放的连接分配给在队列中排队的连接请求。你可以调用closedispose将连接归还给连接池。

 

4.  我应该如何允许连接池?

对于.NET应用程序而言,默认为允许连接池。(这意味着你可以不必为这件事情做任何的事情)当然,如果你可以在SQLConnection对象的连接字符串中加进Pooling=true;确保你的应用程序允许连接池的使用。

 

5.  我应该如何禁止连接池?

ADO.NET默认为允许数据库连接池,如果你希望禁止连接池,可以使用如下的方式:

1)        使用SQLConnection对象时,往连接字符串加入如下内容:Pooling=False;

2)        使用OLEDBConnection对象时,往连接字符串加入如下内容:OLE DB Services=-4;

ADO.NET连接池FAQ

大多数 ADO.NET 数据提供程序使用连接池,以提高围绕 Microsoft 断开连接的 .NET 结构构建的应用程序的性能。应用程序首先打开一个连接(或从连接池获得一个连接句柄),接着运行一个或多...
  • ghfsusan
  • ghfsusan
  • 2008年04月07日 23:22
  • 466

ADO.NET连接池FAQ(转)

   lotusswan(翻译)出处:http://www.c-sharpcorner.com摘要 连接池允许应用程序从连接池中获得一个连接并使用这个连接,而不需要为每一个连接请求重新建立一个连接。一...
  • qdzx2008
  • qdzx2008
  • 2005年12月12日 07:56
  • 1469

关于ADO.NET连接池

前几天同事问我一个问题,一种CS架构的程序,直接把SQL Server作为服务端,每个客户端直接连接数据库操作,如果客户端打开的数量过多时SQL Server的连接数将会特别高,数据库端形成性能瓶颈,...
  • studyzy
  • studyzy
  • 2013年09月10日 14:20
  • 967

你必须知道的ADO.NET(五) 细说数据库连接池

题外话 通过前几章的学习,不知道大家对ADO.NET有一定的了解了没有。撇开文章质量不讲,必须肯定的是,我是用心去写每一篇文章的。无论是是在排版上,还是在内容选取上我都花了不少心思。我希望通过本系列...
  • aojiancc2
  • aojiancc2
  • 2014年04月09日 12:08
  • 1561

ADO.NET 细说数据库连接池

ADO.NET 细说数据库连接池 题外话 通过前几章的学习,不知道大家对ADO.NET有一定的了解了没有。撇开文章质量不讲,必须肯定的是,我是用心去写每一篇文章的。无论是是在排版上,还...
  • moshansk
  • moshansk
  • 2014年08月06日 09:58
  • 1284

ADO.NET连接池【整理:来源自网上】

连接池允许应用程序从连接池中获得一个连接并使用这个连接,而不需要为每一个连接请求重新建立一个连接。一旦一个新的连接被创建并且放置在连接池中,应用程序就可以重复使用这个连接而不必实施整个数据库连接创建过...
  • qdzx2008
  • qdzx2008
  • 2006年05月02日 23:23
  • 3347

c# Ado.net连接池

Ado.net连接池使用总结: 1.第一次打开连接会创建一个连接对象。 2.当这个连接关闭时(调用Close()方法时)会将当前那个连接对象放入池中。 3.下一个连接对象,如果连接字符串与池中现...
  • limlimlim
  • limlimlim
  • 2013年03月02日 18:44
  • 2283

什么是连接池:Ado.net连接池使用总结:什么情况下需要禁用连接池?

连接池 什么是连接池:  客户端向服务器端请求连接, 服务器端先看连接池中是否有空的连接,如果有空的连接就让该客户端连接, 如果没有空的连接,那就看现有连接数是否达到连接池限定的个数,如果没有达到...
  • zshaodan092011
  • zshaodan092011
  • 2012年11月30日 14:04
  • 708

C#-ADO.Net连接池和连接字符串剖析

 随着.Net地推出。数据库读取技术也由原本地ADO进化为ADO.Net。正如所有人所知道地,ADO.Net较ADO提供了更便捷地数据库读写能力以及优秀地性能。 Connection Pool是ADO...
  • MasterFT
  • MasterFT
  • 2008年01月10日 12:40
  • 2071

ADO.NET连接池

 连接池允许应用程序从连接池中获得一个连接并使用这个连接,而不需要为每一个连接请求重新建立一个连接。一旦一个新的连接被创建并且放置在连接池中,应用程序就可以重复使用这个连接而不必实施整个数据库连接创建...
  • JustLovePro
  • JustLovePro
  • 2007年08月29日 21:35
  • 878
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ADO.NET连接池FAQ
举报原因:
原因补充:

(最多只允许输入30个字)