ADO.NET计数器bug之使用性能计数器观察连接池总结

开发 后端
这里为你介绍两个ADO.NET计数器bug,只要是使用性能计数器观察连接池时的bug体现,希望看过本篇大家也去看一看。

运用ADO.NET很长时间了, 偶然间发现了ADO.NET1.1下使用性能计数器观察连接池有关计数器的两个bug,下面就和大家说说。

简单说说ADO.NET计数器bug

ADO.NET计数器bug一.

当应用程序进程关闭后,计数器“SqlClient: Current # pooled connections”和“SqlClient: Current # connection pools”不会减为0,所以每重新运行一次应用程序性能计数器的值在上次的值的基础上一直累加。这是计数器的错误显示,实际上当应用程序关闭后connection pool和pooled connection就减为0。因为关闭应用程序后把性能监视器也关闭,重启应用程序后再重新打开性能监视器就可以看出“SqlClient: Current # pooled connections”和“SqlClient: Current # connection pools”是重新从0开始上升的。

ADO.NET计数器bug二.

用断点调试的情况下,连接串为"server = .;database = northwind;pooling = true;trusted_connection = true" 的connnection第一次Open的时候“SqlClient: Current # pooled connections”就从0变为2。但根据连接串参数的意义,只Open了一个connection,“SqlClient: Current # pooled connections”应该从0变为1(图2是在没有断点调试的情况下得出的曲线)。这不是计数器显示错误,而是ADO.ENT 1.1本身的bug,因为“User Connections”也随着“SqlClient: Current # pooled connections”从0变为2。

为什么需要连接池?

完成建立/关闭一个连接的完整过程是一个消耗大量资源和时间的一个过程。想象一下一个ASP.NET的系统,里面包含大量访问数据库的代码片,系统有大量的用户同时在使用系统,如果程序每次Open/Close一个连接Data Provider都完成建立/关闭一个连接的完整过程,这样的系统性能肯定让人无法接受。

Data Provider提供连接池并通过连接池实现“物理连接”重复使用而避免频繁地建立和关闭“物理连接”,从而大大提高应用系统的性能。图1描述一个应用的不同Client App使用连接池访问数据库,Data Provider负责建立和管理一个或者多个的连接池,每一个连接池里有一个或者多个连接,池里的连接就是“逻辑连接”。连接池里有N个连接表示该连接池与数据库之间有N个“物理连接”。增加一个连接,连接池与数据库的“物理连接”就增加一个,减少一个连接,连接池与数据库的“物理连接”就减少一个。

物理连接

【编辑推荐】

  1. 详谈Linq查询结果分析的方法
  2. 简简单单学习Linq查询语法
  3. 详细阐述Linq插入数据的操作方法
  4. 浅析Linq插入数据的实现方法
  5. 简单解决Linq多条件组合问题
责任编辑:田树 来源: 博客
相关推荐

2010-01-04 16:02:32

ADO.NET计数器

2009-11-12 09:16:15

ADO.NET数据库连

2009-11-06 16:59:26

WCF性能计数器

2010-02-22 16:34:17

WCF性能计数器

2023-08-08 08:01:22

微服务架构服务

2009-12-22 13:25:58

WCF性能计数器内存

2009-12-22 13:16:53

WCF性能计数器

2009-11-12 09:25:21

ADO.NET连接池

2023-07-28 08:15:27

PC程序计数器

2009-11-11 14:04:14

ADO.NET连接池

2009-12-23 14:53:28

ADO.NET连接池

2009-11-03 15:58:22

2009-11-03 16:51:04

ADO.NET连接池观

2010-11-30 13:43:07

SQL备份

2009-12-22 13:34:07

WCF性能计数器级别

2010-01-18 11:03:17

VB.NET网页计数器

2009-11-13 13:11:37

ADO.NET连接池

2009-12-23 09:01:15

ADO.NET连接池

2009-12-30 16:22:58

ADO.NET连接池

2009-12-23 09:14:52

ADO.NET连接池
点赞
收藏

51CTO技术栈公众号