.NET Framework SQL Server 数据怎样提供程序连接池

技术.NET Framework SQL Server 数据怎样提供程序连接池.NET Framework SQL Server 数据怎样提供程序连接池,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家

很多新手不太清楚如何为提供程序连接池。NET框架SQL Server数据。为了帮助大家解决这个问题,下面小编就为大家详细讲解一下。需要的人可以从中学习,希望你能有所收获。

00-1010当连接打开时,将根据精确的匹配算法创建连接池,该算法将连接池与连接中的字符串相关联。每个连接池都与不同的连接字符串相关联。打开新连接时,如果连接字符串与现有池不完全匹配,将创建一个新池。

在下面的示例中,将创建三个新的SqlConnection对象,但是只需要两个连接池来管理这些对象。请注意,第一个和第二个连接字符串之间的差异是分配给初始目录的值。

SqlConnectionconn=newsql connection();conn . ConnectionString=' integrated security=SSPI;initial Talog=north wind ';conn . Open();//PoolAiscreated。SqlConnectionconn=newsql connection();conn . ConnectionString=' integrated security=SSPI;initial Talog=pubs ';conn . Open();//poolbiscreatedbecauseconnectionstringsdiffer。SqlConnectionconn=newsql connection();conn . ConnectionString=' integrated security=SSPI;initial Talog=north wind ';conn . Open();theconnectionstringmatchepoola。一旦连接池被创建,它将不会被销毁,直到活动进程终止。非活动或空池的维护需要最小的系统开销。

00-1010连接池是为每个唯一的连接字符串创建的。创建池时,将创建几个连接对象并将其添加到池中,以满足最小池大小要求。连接将根据需要添加到池中,直到达到最大池大小。

当请求SqlConnection对象时,如果有可用的连接,将从池中获取该对象。要成为可用的连接,该连接必须当前未使用,具有匹配的事务上下文或不与任何事务上下文相关联,并且具有到服务器的有效链接。

如果已达到最大池大小,并且没有可用的连接,则请求将排队。当连接释放回池中时,连接池管理器通过重新分配连接来满足这些请求。当在连接上调用关闭或释放时,连接被释放回池中。

警告建议在使用后始终关闭连接,以便连接可以返回到池中。这可以通过使用Connection对象的Close或Dispose方法来实现。未显式关闭的连接可能不会添加或返回到池中。例如,如果连接超出范围但未显式关闭,则只有在达到最大池大小时连接才会返回连接池,并且连接仍然有效。注意不要在类的Finalize方法中调用Close或Dispose on Connection、DataReader或任何其他托管对象。在终结器中,只释放类直接拥有的非托管资源。如果类不拥有任何非托管资源,请不要在类定义中包含Finalize方法。有关更多信息,请参见垃圾收集编程。00-1010如果连接生存期已过,或者连接池管理器检测到与服务器的连接已断开,连接池管理器将从池中删除该连接。请注意,只有在尝试与服务器通信后,才能检测到这种情况。如果发现连接不再连接到服务器,它将被标记为无效。连接池管理器定期扫描连接池,以查找已释放到池中并标记为无效的对象。一旦找到,这些连接将被永久删除。

如果与服务器的连接已经消失,即使连接池管理器没有检测到断开的连接并将其标记为无效,仍然可以将其从池中取出。当.的时候

发生这种情况时,将生成异常。但是,为了将该连接释放回池中,仍必须将其关闭。

事务支持

连接是根据事务上下文来从池中取出并进行分配的。请求线程和所分配的连接的上下文必须匹配。因此,每个连接池实际上又分为不具有关联事务上下文的连接以及 N 个各自包含与一个特定事务上下文的连接的子部分。

当连接关闭时,它将被释放回池中,并根据其事务上下文放入相应的子部分。因此,即使分布式事务仍然挂起,仍可以关闭该连接而不会生成错误。这样,您就可以在随后提交或中止分布式事务。

使用连接字符串关键字控制连接池

SqlConnection 对象的 ConnectionString 属性支持连接字符串键/值对,这些键/值对可用于调整连接池逻辑的行为。

下表描述了可用于调整连接池行为的 ConnectionString 值。

Connection Lifetime0当连接返回到池中时,将对它的创建时间和当前时间进行比较,如果时间间隔超过由 Connection Lifetime 指定的值(以秒为单位),则会毁坏该连接。在聚集配置中可以使用它来强制在运行服务器和刚联机的服务器之间达到负载平衡。

如果值为零 (0),则将使池连接具有最大的超时期限。

Connection Reset'true'确定在从池中移除数据库连接时是否将其重置。对于 Microsoft SQL Server 版本 7.0,如果设置为 false,将避免在获取连接时经历一个额外的往返过程,但必须注意的是连接状态(如数据库上下文)不会被重置。Enlist'true'当为 true 时,如果存在事务上下文,池管理程序将自动在创建线程的当前事务上下文中登记连接。Max Pool Size100池中允许的最大连接数。Min Pool Size0池中维护的最小连接数。Pooling'true'当为 true 时,将从相应的池中取出连接,或者在必要时创建连接并将其添加到相应的池中。

连接池的性能计数器

SQL Server .NET Framework 数据提供程序添加了几个性能计数器,它们将使您能够微调连接池特性,检测与失败的连接尝试相关的间歇性问题,并检测与对 SQL Server 的超时请求相关的问题。

下表列出了可以在“.NET CLR 数据”性能对象下的“性能监视器”中访问的连接池计数器。

SqlClient: Current # pooled and non pooled connections当前池连接或非池连接的数目。SqlClient: Current # pooled connections当前所有池中与特定进程关联的连接的数目。SqlClient: Current # connection pools当前与特定进程关联的池的数目。SqlClient: Peak # pooled connections自特定进程开始以来所有池中的连接数峰值。请注意:此计数器只有在与特定进程实例关联时才可用。_Global 实例始终返回 0。SqlClient: Total # failed connects打开连接的尝试因任何原因而失败的总次数。

注意将 SQL Server .NET Framework 数据提供程序性能计数器与 ASP.NET 应用程序一起使用时,只有 _Global 实例是可用的。因此,性能计数器返回的值是所有 ASP.NET 应用程序的计数器值的总和。

名称 默认值 说明 计数器 说明

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/123898.html

(0)

相关推荐

  • MySQL数据库索引的弊端及怎么使用

    技术MySQL数据库索引的弊端及怎么使用本篇内容介绍了“MySQL数据库索引的弊端及怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

    攻略 2021年11月29日
  • 用比喻的修辞手法写一句话,运用比喻、拟人的修辞手法写句子

    技术用比喻的修辞手法写一句话,运用比喻、拟人的修辞手法写句子1用比喻的修辞手法写一句话、一阵风吹来,树摆动着枝叶,对我们点头微笑。 2、玫瑰在宁静的夜晚向星星眨眼。 3、无数的麦粒在风中微笑,飞舞。 4、在绿色的荷叶间,

    生活 2021年10月22日
  • window10上登录Oracle时提示ORA-12546错误怎么办

    技术window10上登录Oracle时提示ORA-12546错误怎么办这篇文章主要介绍window10上登录Oracle时提示ORA-12546错误怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要

    2021年11月20日
  • 甲烷燃烧火焰颜色,请问这个火焰的颜色是什么色号

    技术甲烷燃烧火焰颜色,请问这个火焰的颜色是什么色号一般来说火焰的颜色和温度的关系是:蓝色>白色>黄色>红色。不过也有例外,因为不同物质燃烧的颜色是不同的,比如镁甲烷燃烧火焰颜色、碳、磷在氧气中燃烧是白色火焰。甲烷、一氧化

    生活 2021年10月24日
  • 星期4英文,一周的星期用英文怎么写

    技术星期4英文,一周的星期用英文怎么写星期一至星期日英文分别是Monday,Tuesday星期4英文、Wednesday、Thursday、Friday、Saturday、Sunday,具体缩写形式及发音如下1、星期一

    生活 2021年10月22日
  • ASP怎样循环读取数据库记录

    技术ASP怎样循环读取数据库记录这篇文章给大家介绍ASP怎样循环读取数据库记录,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"

    攻略 2021年12月1日