zoukankan      html  css  js  c++  java
  • 查询超时问题的处理

    昨天一个WINFORM项目的程序出现查询超时的异常,报错如下:

    处理过程如下:

    1、根据以往经验,创建索引。但是在主要查询语句用到的几个列上创建组合索引后,问题并未解决;

    2、在连库字符串中加入连接超时的配置信息:Connect Timeout=600,这里的单位是秒,如果设置成0,表示不限制,未能解决;

        有的资料上说需要在<connectstring>配置信息中加入ProviderName="System.Data.SqlClien"超时配置才管用,因为之前的连库串用的不是<connectstring>,所以也没有加;

    3、后来经过测试,存储过程的执行在数据库里执行的时间只有11秒,但是在页面上执行了30秒左右就会弹出超时报错提示;因此,考虑应该是调用过程出的问题,按WEB服务超时的思路,搜到如下方法,在Web.config文件中加入:

    <httpRuntime maxRequestLength="10240" appRequestQueueLimit="100" useFullyQualifiedRedirectUrl="true" executionTimeout="1200" />
    问题未能解决;
    4、后来又搜到了一种把存储过程提前重新编译的解决方法,一样是未能解决问题。
     
    最后,参考以下文章:

    C# 控制连接超时 - 无恨星晨 - 博客园
    https://www.cnblogs.com/weixing/p/5512496.html

    连接超时分为三种:


    1、TCP Connection to SQL Server

    2、SqlConnection.Open

    3、 SqlCommand.Execute

    第一种不太好控制,文章中相关的解决方法;

    第二种是创建连接时的超时,连库字符串中的超时其实是这一种,因此那个Connect Timeout其实只是对连接超时起作用,按文章所说,3秒足够;

    第三种是执行语句的超时,按文章所说是最简单的,只要设置SqlCommand的.CommandTimeout属性就可以。

    因为我的程序架构有些乱,所以专门写了一个直接使用SqlCommand访问数据库的方法,并设置了CommandTimeout属性,再次执行程序,在一个较长的等待后,结果出来了,问题解决。

    当然,还是不够完美,等待的时间有点长,可能是因为查义时没有任何限制条件的原因吧。

  • 相关阅读:
    优化算法-BFGS
    Go语言及Web框架Beego环境无脑搭建
    使用WCF扩展记录服务调用时间
    红黑树LLRB
    springmvc国际化 基于请求的国际化配置
    Adapter Pattern
    泡泡屏保
    使用WCF扩展在方法调用前初始化环境
    OAuth的一个.NET开源实现
    Google C++编程风格指南
  • 原文地址:https://www.cnblogs.com/lgzslf/p/15292044.html
Copyright © 2011-2022 走看看