讲述ADO.NET统计的相关问题

开发 后端
在使用ADO.NET统计之前,你需要选择ADO.NET统计类型,设置ADO.NET统计文本,并且将ADO.NET统计绑定connection,你可以通过设置对应的属性。

获取连接会消耗一些时间,在ADO.NET统计应用中,当新的请求到达时,连接会被不断地打开和关闭,ADO.NET统计高效地处理请求。在这种环境里,要求建立连接时负载很小变得很重要,ADO.NET统计并且成了系统扩展性的瓶颈。

一个解决办法就是连接池(Connection Pooling)。连接池就是在使用相同的数据源时,使会话共享的数据库连接保持持久的设置。这样可以避免总在创建和销毁连接。在ADO.NET中,连接池对于程序员是完全透明的,数据访问代码根本不需要修改。当客户通过调用Open()请求连接时,ADO.NET统计直接从可获得的池中获得服务,而不是重新创建。当客户通过调Close()或Dispose()释放连接时,也不需要丢弃连接,而是返回到池中,为下一个请求服务。

ADO.NET统计本身没有包含连接池机制。但是,多数ADO.NET提供者实现了连接池的某些形式。ADO.NET统计实现了它们自己的高效的连接池算法。这些算法在可管理代码中完全实现----这与某些流行的错误观念形成鲜明对比---不使用COM+企业服务。对于在SQL Server 和Orace中需要重用的连接来说,连接串能够精确匹配。如果稍有不同,在新的池中会创建新的连接。

提示:SQL Server和Oracle池使用纯文本算法。意思就是连接串中的任何丁点的改变都会阻碍连接池,ADO.NET统计即便是简单地更改参数的顺序或者是在***面添加一个额外的空格也不能使用连接池。它强制你在Web页中不进行硬编码连接串。相反,你应该在一个地方存放连接串(***是在web.config)文件的<connectionStrings>节中存放)。

使用SQL Server和Oracle提供者,连接池是可用的并且自动使用。然而,你也可以使用连接串参数来配置池的大小。如果使用SQL Server提供者,你可以使用SqlConnection.RetrieveStatistics()方法(.NET2.0以前没有这个方法)获得一些有趣的统计。RetrieveStatistics返回一个哈希表和不同的底层细节,来帮助你分析命令的性能和执行的任务的数量。连接统计在部署了的应用中并不会经常用到,但在测试和成型期间分析性能时很有用。例如ADO.NET统计提供了一个工具,你可以使用它来确定不同的数据访问策略执行有何不同(其它工具包括SQL Server管理工具,如SQL Profiler和Query Analyzer)。#t#

默认的情况下,连接统计被禁用以提高性能。为了使用连接统计,你需要将SqlConnection.StatisticsEnabled属性设置为true。这样就告诉了SqlConnection类收集它执行的每个动作的信息。在任何断点之后,ADO.NET统计你都可以调用RetrieveStatistics()方法来检查这个信息,或者使用ResetStatistics()来清空它,然后重新开始捕捉。

责任编辑:chenqingxiang 来源: 56cto博客
相关推荐

2009-11-12 11:38:03

ADO.NET连接事件

2009-12-31 14:28:09

ADO.NET参数

2009-12-28 15:32:04

ADO.NET构造

2009-12-31 13:41:39

ADO.NET架构

2009-12-29 14:24:40

使用ADO.NET

2009-12-30 14:21:21

ADO.NET设置

2009-12-29 14:01:45

ADO.NET Sql

2009-12-22 15:33:33

ADO.NET参数

2009-12-22 15:03:51

ADO.NET使用

2009-07-06 10:43:51

ADO.NET

2010-01-04 17:27:15

ADO.NET异步操作

2009-12-21 17:35:24

ADO.NET对象

2009-12-21 15:58:19

ADO.NET集合

2009-12-22 09:50:23

ADO.NET学习

2009-12-25 10:25:59

2009-12-18 14:37:56

ADO.NET模型

2009-12-21 16:45:41

ADO.NET程序

2009-12-22 15:20:25

ADO.NET功能

2009-12-23 11:25:30

ADO.NET处理

2009-12-24 09:26:01

ADO.Net Tea
点赞
收藏

51CTO技术栈公众号