利用SqlConnection获得SqlServer的统计信息

SqlConnection有一个属性叫StatisticsEnable,将它设为true后,就可以通过SqlConnection.RetrieveStatistics()方法获得访问SqlServer过程中的统计信息。
RetrieveStatistics()方法返回一个IDictionary对象,其中包含以下字段:

键名

说明

BuffersReceived

返回在应用程序使用提供程序启动并启用了统计信息之后,提供程序从 SQL Server 接收的表格格式数据流 (TDS) 数据包数。

BuffersSent

返回在启用了统计信息之后,由提供程序发送到 SQL Server 的 TDS 数据包数。 大命令可能需要多个缓冲区。 例如,如果某个大命令发送到服务器,并且需要六个数据包,ServerRoundtrips 将以 1 递增,BuffersSent 将以 6 递增。

BytesReceived

返回在应用程序使用提供程序启动并启用了统计信息之后,提供程序从 SQL Server 接收的 TDS 数据包中的数据字节数。

BytesSent

返回在应用程序使用提供程序启动并启用了统计信息之后,在 TDS 数据包中发送到 SQL Server 的数据字节数。

ConnectionTime

连接在统计信息启用之后已打开的时间(如果在打开连接之前就启用了统计信息,则为总连接时间)。

CursorOpens

返回在应用程序使用提供程序启动并启用了统计信息之后,通过连接打开游标的次数。

注意,SELECT 语句返回的只读/只进结果不属于游标,所以不影响此计数器。

ExecutionTime

返回在启用统计信息之后,提供程序用于处理方面的累计时间,包括等待服务器回复所用的时间以及执行提供程序本身的代码所用的时间。

包含计时代码的类如下:

SqlConnection

SqlCommand

SqlDataReader

SqlDataAdapter

SqlTransaction

SqlCommandBuilder

为了保持对性能要求很高的成员尽可能小,下列成员不计时:

SqlDataReader

this[] 运算符(所有重载)

GetBoolean

GetChar

GetDateTime

GetDecimal

GetDouble

GetFloat

GetGuid

GetInt16

GetInt32

GetInt64

GetName

GetOrdinal

GetSqlBinary

GetSqlBoolean

GetSqlByte

GetSqlDateTime

GetSqlDecimal

GetSqlDouble

GetSqlGuid

GetSqlInt16

GetSqlInt32

GetSqlInt64

GetSqlMoney

GetSqlSingle

GetSqlString

GetString

IsDBNull

IduCount

返回在应用程序使用提供程序启动并启用了统计信息之后,通过连接执行的 INSERT、DELETE 和 UPDATE 语句的总数。

IduRows

返回在应用程序使用提供程序启动并启用了统计信息之后,受到通过连接执行的 INSERT、DELETE 和 UPDATE 语句影响的行的总数。

NetworkServerTime

返回在应用程序使用提供程序启动并启用了统计信息之后,提供程序等待服务器回复所用的累计时间。

PreparedExecs

返回在应用程序使用提供程序启动并启用了统计信息之后,通过连接执行的已准备命令数。

Prepares

返回在应用程序使用提供程序启动并启用了统计信息之后,通过连接准备的语句数。

SelectCount

返回在应用程序使用提供程序启动并启用了统计信息之后,通过连接执行的 SELECT 语句数。 其中包括用于从游标检索行的 FETCH 语句,SELECT 语句的计数在到达 SqlDataReader 的结尾时更新。

SelectRows

返回在应用程序使用提供程序启动并启用了统计信息之后所选的行数。 此计数器反映 SQL 语句生成的所有行,即使是调用方没有真正使用的行。 例如,如果在读取整个结果集之前关闭数据读取器,不会影响该计数。 其中包括通过 FETCH 语句从游标检索的行。

ServerRoundtrips

返回在应用程序使用提供程序启动并启用了统计信息之后,连接向服务器发送命令并收到回复的次数。

SumResultSets

返回在应用程序使用提供程序启动并启用了统计信息之后使用过的结果集数。 例如,此值可能包括返回到客户端的任何结果集。 对于光标,每个获取或块获取操作都属于独立的结果集。

Transactions

返回在应用程序使用提供程序启动并启用了统计信息之后启动的用户事务数(包括回滚)。 如果连接在启用自动提交的情况下运行,则每个命令都属于一个事务。

只要执行了 BEGIN TRAN 语句,无论事务是提交还是以后回滚,此计数器都会使事务计数递增。

UnpreparedExecs

返回在应用程序使用提供程序启动并启用了统计信息之后,通过连接执行的非准备语句数。


可通过SqlConnection.ResetStatistics()方法将统计数据置0。
posted @ 2008-02-03 16:34  Think  阅读(2842)  评论(2编辑  收藏  举报