zoukankan      html  css  js  c++  java
  • ADO.NET中连接池状态的跟踪

     

    因为测试的时候用的都是小数据量数据,程序运行正常,但是到了客户那里,碰到才100多条的数据,居然提示我连接超时,让我百思不得其解。一时间不知道怎么跟踪好。
    寻寻觅觅,终于找到了一个跟踪数据连接池状态的方法:
    http://www.yesky.com/SoftChannel/72342380484755456/20020930/1633376_2.shtml
    顺便在这里抄录一下:
    监视链接池化

      要监视应用程序对链接池化的应用情况,可以使用随SQL Server发行的Profiler工具,或随微软Windows 2000发行的性能监视器。

      要利用SQL Server Profiler 监视链接池化,操作如下:
    1. 单击开始,指向程序,指向Microsoft SQL Server,然后单击Profiler运行Profiler。

    2. 文件菜单中,指向新建,然后单击跟踪

    3. 提供链接内容,然后单击确定

    4. 跟踪属性对话框中,单击事件标签。

    5. 已选事件类别列表中,确保审核登录审核登出事件显示在安全审核下面。

    6. 单击运行开始跟踪。在链接建立时,将会看到审核登录事件;在链接关闭时看到审核登出事件。
      要通过性能监视器监视链接池化,操作如下:
    1. 单击开始,指向程序,指向管理工具,然后单击性能运行性能监视器。

    2. 在图表背景中右击,然后单击增加计数器。

    3. 在性能对象下拉列表框中,单击SQL Server:通用统计。

    4. 在出现的列表中,单击用户链接。

    5. 单击增加,然后单击关闭。
      注意 .NET框架的RTM版本将另外包含一组ADO .NET性能计数器(这些计数器能与性能监视器结合起来使用),这些计数器用于为SQL Server .NET数据供应器监视并积累链接池化状态。

    一跟踪,吓了一大跳,程序在显示DataGrid的时候,连接数从1猛增到100。然后保持这个连接数,然后连接超时的错误出现了。查询了一下这段代码。原来是因为在DataGrid的ItemDataBound事件中动态去读数据用来显示,读数据的时候打开的Connection没有及时关闭!!!
    得出两点教训:
    1.Connection一定要及时关闭。可以用using语法。
    2.DataGrid的ItemDataBound最好不要去动态执行Select语句,这样会影响显示的性能。最好用left outer join的方法。
  • 相关阅读:
    Java数据结构和算法——汉诺塔问题
    svn的使用
    Struts+iBatis+Spring+mysql整合开发
    Java Collection
    IOS推送功能的实现(javapns)
    [工具库]JFileDownloader工具类——多线程下载网络文件,并保存在本地
    xsl 中 foreach 的使用
    网页制作技巧24条
    js 实现 datagrid 鼠标移动时datagrid 表的该变
    How to extend ASP.NET datagrid for multiselection of data rows.
  • 原文地址:https://www.cnblogs.com/fuyingke/p/450775.html
Copyright © 2011-2022 走看看