在SQLServer .NET Data中Connection Pooling 配置.doc

在SQLServer .NET Data中Connection Pooling 配置.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在SQLServer .NET Data中Connection Pooling 配置

在SQLServer .NET Data中Connection Pooling 配置[摘 要] 数据库连接是一种关键的有限的昂贵的资源,它的好坏影响到整个应用程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用,这项技术能明显提高对数据库操作的性能。在本文中,重点介绍一下在SQL Server .NET中如何配置Connection Pooling [关键字] 连接池(Connection Pooling) SQL Server .NET Pool Connection 使用连接池(Connection Pooling)的目的在于它能提高与数据库连接的应用程序的性能,可以极大促进应用程序的性能与可扩展性。由于网络速度以及与数据库距离等因素的影响,创建一个连接十分耗时,这在WEB应用中尤为突出。连接池的作用就是使连接可以重用,从而有效的提高性能。当用户释放一个连接后,这个连接就回到连接池中,供其他用户继续使用。下面我们探讨一下在SQL Server .NET中如何配置Connection Pooling SQL Server .NET Data Provider自动提供connection pooling。用户也可以自己提供一些连接字符串修饰符来控制connection pooling 1、Pool的创建与指定 当连接打开时,基于精确匹配算法的一个connection pool被创建,这个算法将pool和这个连接的连接字符串相关联。在新连接打开时,如果连接字符串不精确匹配一个已存在的pool,新pool被创建。下例中,三个新的SqlConnection对象被创建,但只有两个connection pool要求管理它们。注意,第一个和第二个的连接字符串由所指定的initial catalog值不同而不同 SqlConnection conn = new SqlConnection(); conn.ConnectionString = “Integrated Security=SSPI;Initial Catalog=northwind”; conn.Open(); // Pool A is created. SqlConnection conn = new SqlConnection(); conn.ConnectionString = “Integrated Security=SSPI;Initial Catalog=pubs”; conn.Open(); // Pool B is created because the connection strings differ. SqlConnection conn = new SqlConnection(); conn.ConnectionString = “Integrated Security=SSPI;Initial Catalog=northwind”; conn.Open(); // The connection string matches pool A. 只要创建了connection pool,还有活动进程时connection pool就存在。维持不活动的和空pool的系统开销很小 2、添加Connection 每个独立的连接字符串对应一个connection pool。当pool创建时,多个连接对象被创建并被加至pool中以保证最小的pool数。连接可以一直添加,直到邮大的pool大小。当SqlConnection对象被请求时,如果当前连接可用,我们可以从pool中获得它。为了可用,连接必须当前不被使用,而且必须有一个对应的连接上下文,并拥有一个与服务器的有效连接。如果达到最大的池大小而无可用的连接,请求被缓冲于队列中。对象pooler可以在有可用连接时再进行分配。如果超时后仍然没有可用连接会产生一个错误。注意:必须在使用后关闭连接,这可以通过close或dispose方法关闭连接。不显式关闭连接,连接不会自动被系统回收 3、Connection的删除 如果连接的生存期到达或连接已经得到服务时,pooler将删除此对象。这个过程是在试图连接服务器后得到的。如果发现一个连接不再连接到服务器,标记它为无效。Pooler定期扫描标记无效的连接,这些连接以后会被永远删除。如果连接到的服务器消失,此连接会被移回pool中,即使它不被标记为无效。在此过程中会产生一个异常。此时用户仍然必须显式关闭连接以使它回到pool中 4、支持操作 由pool中抽取的Connection基于操作上

文档评论(0)

docman126 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7042123103000003

1亿VIP精品文档

相关文档