阐述ADO.NET计数器BUG说明举例

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

学习使用ADO.NET很长时间了, 那天偶然发现ADO.NET计数器出现了很多的错误,这些错误我也不知道是因为什么原因下造成的,下面就和大家说说,简单说说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。 #t#

为什么需要连接池?

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

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

物理连接

责任编辑:chenqingxiang 来源: NET130
相关推荐

2009-10-29 11:47:15

ADO.NET计数器b

2009-12-18 16:28:35

ADO.NET结构

2009-12-22 10:43:48

ADO.NET类库

2009-12-22 10:58:50

ADO.NET类

2009-11-03 16:51:04

ADO.NET连接池观

2009-11-04 16:23:09

ADO.NET存储过程

2009-12-24 09:34:47

调用ADO.NET

2009-12-21 17:29:43

ADO.NET模型

2009-12-22 17:43:26

ADO.Net技术

2009-12-22 11:17:58

ADO.NET产品

2009-12-30 16:05:20

ADO.NET实例

2009-12-21 10:37:05

Ado.Net 实例

2009-12-21 11:29:13

Ado.Net代码

2010-01-04 09:03:57

ADO.NET连接对象

2009-12-22 09:15:02

ADO.NET功能

2009-12-18 17:01:21

ADO.NET数据

2009-12-21 14:55:49

ADO.NET属性

2010-01-04 13:16:31

ADO.NET命令

2009-12-30 15:11:35

ADO.NET数据

2009-12-22 15:51:18

ADO.NET代码
点赞
收藏

51CTO技术栈公众号