首页 | 考研 | MBA | 专升本 | 成考 | 自考 | 高考 | 中考 | 出国 | 外语 | 电脑 | 公务员 | 司法 | 财考 | 资格考试 | 论文写作
 淘学考试计算机正文
 

12.4Provider的统计信息
 
 


编辑:xujie 时间:2007-11-27 来源:淘学考试网 推荐好友




 

不管是为了分析应用程序的性能还是以数据流量计费,当我们要粗略地监控数据库前端应用程序的执行状况时,以往大都只能通过 Windows 系统提供的性能监视器及其相关的计数器来获得数据。ADO.NET 2.0 的 SqlClient 内置提供每条连接的访问数据统计,可以让我们简单地记录一些执行时的状态。但因为要记录与取得这些统计信息需要额外的资源,默认这项功能是关闭的,以节省资源。若要启动记录,需通过 SqlConnection 的 Statistics- Enabled 属性来打开执行。我们所设计的范例程序画面

在范例中,我们简单测试执行某句 T-SQL 语法后,将取回的统计信息显示在下方的窗口中。同时测试若某条连接不通过 ResetStatistics 方法重置(Reset)统计信息,则历次执行的统计数据会累加,就算调用了Connection 的 Close 方法,统计数据在重用连接时依然是继续累加。范例程序代码如列表

 

图12-6 查看执行 SQL 命令时相关的统计信息

程序代码列表12-6 通过 SqlConnection 对象的 RetrieveStatistics 方法取回相关统计数据

Public Class Statistics

Dim cnn As SqlConnection

Dim dt As New datatable

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles Button1.Click

If cnn Is Nothing Then

cnn = New SqlConnection( _

"Data Source=.;Initial Catalog=AdventureWorks;Integrated Security=SSPI")

'设置要记录访问的统计信息

cnn.StatisticsEnabled = True

cnn.Open()

Else

If cnn.State = Data.ConnectionState.Closed Then cnn.Open()

End If

Dim cmd As New SqlCommand(TextBox1.Text, cnn)

cmd.ExecuteNonQuery()

'取得统计信息

Dim hashStats As Hashtable = CType(cnn.RetrieveStatistics(), Hashtable)

'显示统计信息

Dim enu As IDictionaryEnumerator = hashStats.GetEnumerator

dt.Clear()

Dim dr As DataRow

While (enu.MoveNext)

dr = dt.NewRow()

dr(0) = enu.Key.ToString()

dr(1) = enu.Value.ToString()

dt.Rows.Add(dr)

End While

If chkCloseCnn.Checked Then cnn.Close()

'如果不 Reset 某条连接的统计信息,而该连接又一直重用

'则不管是否关闭后再从 Pooling 取出,统计信息都会持续累加

If chkResetStatistics.Checked Then cnn.ResetStatistics()

End Sub

Private Sub Statistics_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

dt.Columns.Add(New DataColumn("项目"))

dt.Columns.Add(New DataColumn("值"))

DataGridView1.DataSource = dt

End Sub

End Class

目前为止 Microsoft SQL Server Provider 提供18 项统计信息,例如,代表统计通过 TDS 协议往返包 (packet)的 BuffersSent 和 BuffersReceived以及代表往返字节数的BytesSent 和 BytesReceived 等等。这些统计项目的说明都可以在 Visual Studio 2005 的在线帮助中如下的位置找到,在此也就不再详述:

Visual Studio\.NET Framework Programming in Visual Studio\Accessing Data\ADO.NET\Using the .NET Framework Data Provider for SQL Server\Using Provider Statistics

也许你会认为,若想分析应用程序的连接信息以及连接过程中所耗费的资源,使用SQL Server 提供的工具界面就可以做有效的测量。但是在这个前提下你必须是能主控 SQL Server 的数据库管理员(DBA),通常在安全的考虑之下,程序设计师与一般用户无法直接地使用到这些工具,想要取得这些连接信息相对来说也更加困难。通过ADO.NET 2.0 的 SqlClient 内置提供每条连接的访问数据统计,程序设计师可自行设计相关的连接统计方式,无论是对性能分析还是自行监控程序的各项状态,都相对方便许多。

 

 

 相 关 内 容



.

  推荐课程
 
 
 
 
 
 
  资讯快报
  综合辅导
  技巧心得
版权信息 - 关于我们 - 联系方式 - 服务承诺 - 客户投诉 - 广告服务 - 网站合作 - 会员服务 - 友情链接 - 站长统计3
1 不良信息
举报中心
文明办网文明上网举报电话:15964542668
举报邮箱:topej@163.com
2 网络110
报警服务
服务热线:15964542668 电子邮件:guoyong@topej.com 服务 QQ:350125289
淘学之家(www.topej.com)旗下网站 ICP注册号:鲁ICP备07016860号