欢迎来到天天文库
浏览记录
ID:24081241
大小:51.00 KB
页数:4页
时间:2018-11-12
《在sqlserver . data中connection pooling 的配置》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、在SQLServer.Data中ConnectionPooling的配置[摘要]数据库连接是一种关键的有限的昂贵的资源,它的好坏影响到整个应用程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用,这项技术能明显提高对数据库操作的性能。在本文中,重点介绍一下在SQLServer.中如何配置ConnectionPooling。 [关键字]连接池(ConnectionPooling)SQLServer.PoolConnection 使用
2、连接池(ConnectionPooling)的目的在于它能提高与数据库连接的应用程序的性能,可以极大促进应用程序的性能与可扩展性。由于X络速度以及与数据库距离等因素的影响,创建一个连接十分耗时,这在WEB应用中尤为突出。连接池的作用就是使连接可以重用,从而有效的提高性能。当用户释放一个连接后,这个连接就回到连接池中,供其他用户继续使用。下面我们探讨一下在SQLServer.中如何配置ConnectionPooling。 SQLServer.DataProvider自动提供connectionpoolin
3、g。用户也可以自己提供一些连接字符串修饰符来控制connectionpooling。 1、Pool的创建与指定 当连接打开时,基于精确匹配算法的一个connectionpool被创建,这个算法将pool和这个连接的连接字符串相关联。在新连接打开时,如果连接字符串不精确匹配一个已存在的pool,新pool被创建。下例中,三个新的SqlConnection对象被创建,但只有两个connectionpool要求管理它们。注意,第一个和第二个的连接字符串由所指定的initialcatalog值不同而不同。
4、SqlConnectionconn=neatchespoolA. 只要创建了connectionpool,还有活动进程时connectionpool就存在。维持不活动的和空pool的系统开销很小。 2、添加Connection 每个独立的连接字符串对应一个connectionpool。当pool创建时,多个连接对象被创建并被加至pool中以保证最小的pool数。连接可以一直添加,直到邮大的pool大小。当SqlConnection对象被请求时,如果当前连接可用,我们可以从pool中获得它。为了可用,
5、连接必须当前不被使用,而且必须有一个对应的连接上下文,并拥有一个与服务器的有效连接。如果达到最大的池大小而无可用的连接,请求被缓冲于队列中。对象pooler可以在有可用连接时再进行分配。如果超时后仍然没有可用连接会产生一个错误。注意:必须在使用后关闭连接,这可以通过close或dispose方法关闭连接。不显式关闭连接,连接不会自动被系统回收。 3、Connection的删除 如果连接的生存期到达或连接已经得到服务时,pooler将删除此对象。这个过程是在试图连接服务器后得到的。如果发现一个连接不再连
6、接到服务器,标记它为无效。Pooler定期扫描标记无效的连接,这些连接以后会被永远删除。如果连接到的服务器消失,此连接会被移回pool中,即使它不被标记为无效。在此过程中会产生一个异常。此时用户仍然必须显式关闭连接以使它回到pool中。 4、支持操作 由pool中抽取的Connection基于操作上下文。请求线程的上下文和指定的连接必须匹配。因此每个connectionpool实际上被分为无上下文连接的连接和另外N个和特定上下文相连的连接。当连接关闭时,它返回pool并根据相应的操作上下文返回到相应的
7、区中。因此用户可以安全地关闭一个连接,即使一个分布式连接仍然被挂起。这允许用户在其后忽略或终止一个分布式进程。 5、以连接字符串关键字控制ConnectionPool ConnectionString属性是SQLConnection对象的一个属性,它支持一个连接串/值对,这个对是用于调整connectionpool行为的。ConnectionString的值及解释,如表1所示。 6、ConnectionPool的性能记数器 SQLServer.DataProvider添加了一些性能记数器使用户可以
8、调整connectionpool特性。下面是一些记数器,如表2所示。 鉴于篇幅有限,针对具体实例的实现过程请读者参考其他相关书籍。
此文档下载收益归作者所有