C#百万数据查询超时问题

用c#从百万数据中筛选一些信息时,经常会出现程序连接超时的错误,常见的错误很多,例如:Timeout expired. The timeout period elapsed prior to completion of the operation or the server等等

本文就常见的几种解决方案进行说明,纯属个人见解,欢迎拍砖

①:当然第一步要查看是否Connection没关闭问题,一般新手都会犯这个错误,需要认真查看一下哦,这个就不详细说了。

②:如果将sql语句复制到查询分析器中执行,如果执行时间本来就超过30秒,那么一般采用如下的解决方案:

首先分析引起Timeout的原因,一般是Connection没关闭或者SqlConnection.ConnectionTimeout超时,另外一种就是SqlCommand.CommandTimeout引起的, SqlCommand的此方法为获取或设置在终止执行命令的尝试并生成错误之前的等待时间,

他的默认为 30 秒,你可以设置为0 ,它表示无限制,但是最好不要去设置0 ,否则会无限的等待下去的,只需要针对查询分析器的时间,去设置这个时间就可以了

③:执行时间不是很长,但是还是操作超时,那么 也有很多原因,一般经常出现的有两种,asp.Net应用程序的请求超时,或者是连接池的连接生存期过去,,因为连接池默认值是60秒,那么针对这两种解决方案为:

解决应用程序请求超时:

在web.config中加上以下语句:

<system.web>

<httpRuntime maxRequestLength="102400" executionTimeout="720" />

</system.web>

executionTimeout:是允许执行请求的最大时间限制,单位为秒
          maxRequestLength:指示 ASP.Net 支持的最大文件上载大小。该限制可以防止。。。。大家都懂的。。呵呵

解决程序池生存周期问题:

在数据库连接字符串中修改:database=AA;uid=sa;pwd=sa; Pooling=true; MAX Pool Size=1024;Min Pool Size=1;Connection Lifetime=60

至于含义基本上从英文的意思上大家就明白了,呵呵。。。当然Min Pool Size=1这个设置还有很多讲究,如果想研究的可以看一下下面的文章,呵呵

http://www.cnblogs.com/ZHUYIN/archive/2011/11/02/2232578.html

时间: 2024-10-13 11:46:43

C#百万数据查询超时问题的相关文章

C#百万数据查询出现超时问题的解决方法

本文较为详细的讲解了C#百万数据查询出现超时问题的解决方法,分享给大家供大家参考之用.具体方法如下: 很多时候我们用C#从百万数据中筛选一些信息时,经常会出现程序连接超时的错误,常见的错误有很多,例如: Timeout expired. The timeout period elapsed prior to completion of the operation or the server 等等 本文就常见的几种解决方案进行说明,感兴趣的可以对此加以改进与完善. ①.当然第一步要查看是否Conn

百万数据查询效率提高方法(转)

原文地址:https://www.cnblogs.com/eer123/p/9875844.html 处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:     select id fr

Oracle百万数据查询语句

SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT id, name, age, birthDate, sex, describe, city, create_by, create_date, update_by, update_date, del_flag FROM t_employee where del_flag = 0 order by create_date desc) e WHERE ROWNUM <= 1000000) WHERE r

处理百万级以上的数据查询提高效率的办法

1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from

MySQL单表百万数据记录分页性能优化

原文地址:http://www.cnblogs.com/lyroge/p/3837886.html MySQL单表百万数据记录分页性能优化 背景: 自己的一个网站,由于单表的数据记录高达了一百万条,造成数据访问很慢,Google分析的后台经常报告超时,尤其是页码大的页面更是慢的不行. 测试环境: 先让我们熟悉下基本的sql语句,来查看下我们将要测试表的基本信息 use infomation_schemaSELECT * FROM TABLES WHERE TABLE_SCHEMA = 'dbna

mybatis的sql语句导致索引失效,使得查询超时

mybaitis书写sql需要特别注意where条件中的语句,否则将会导致索引失效,使得查询总是超时.如下语句会出现导致索引失效的情况: with test1 as (select count(C_FUNDACCO) val,'a' v from TINF_REQUEST a where a.C_FUNDCODE = #{cFundcode} and a.D_DATADATE = #{dDatadate}), test2 as (select count(C_FUNDACCO) val,'a'

SQL SERVER 数据库中几百万数据查询优化

1.当需要查询表中所有数据时 比较以下三种查询语句: 假设数据表为BasicMsg20170401,共有17列,数据条数为两百八十四万 (1)SELECT * FROM  BasicMsg20170401 耗时44秒以上 (2)SELECT 列1,列2... FROM  BasicMsg20170401 耗时28~30秒上下 (3)SELECT 列1,列2... FROM  BasicMsg20170401 WITH  (index(SelAA_Index) ) 强制加入非聚集索引后,耗时23~

SQL优化----百万数据查询优化

百万数据查询优化 1.合理使用索引 索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率.现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构.索引的使用要恰到好处,其使用原则如下: ●在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引. ●在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引. ●在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引.比如在雇员表的"性别"

SQL优化----百万数据查询优化(转载)

(转自http://www.cnblogs.com/qqzy168/archive/2013/08/02/3233817.html) 1.合理使用索引 索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率.现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构.索引的使用要恰到好处,其使用原则如下: ●在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引. ●在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引.