当前位置:编程学习 > C#/ASP.NET >>

循环10000条数据出现Request Time out

最近在做系统的时候出现了一个很棘手的问题。
首先我从数据库中取得10000条数据,然后循环这10000条数据,
在循环中有通过数据中的某个字段又到数据库里面去查询。而且很多复杂的运算过程。
少量数据还能运行,当运行大量数据时就会出现Request Time out.

由于没易做图量数据的处理经验,还望各位易做图指点。

--------------------编程问答-------------------- http://kb.cnblogs.com/a/1719689/异步 --------------------编程问答-------------------- 数据分页,每次只取一部分数据 --------------------编程问答-------------------- 10000条数据都显示在页面上,chrome也称不住啊 --------------------编程问答--------------------
引用 3 楼  的回复:
10000条数据都显示在页面上,chrome也称不住啊

不是显示到页面上面,就拿生成账单来说嘛,某个客户下面有10000个雇员,而我要为这家客户生成这10000个雇员的所有费用并插入到数据库中去。这时候就要对这10000个雇员中的费用进行读写操作。 --------------------编程问答-------------------- 分批尝试 --------------------编程问答-------------------- 有两招建议:

一是尽量加快单条的计算消耗的时间,办法很多建立索引是最直接有效的一种,另外要尽量减少大数据的查询,比如需要查询的记录先查好,单独放到临时表,在临时表上增加索引查询,会比直接在表上建立索引查询要快,也不会产生死锁。 另外就是要尽量优化算法。

二是分拆,一次做太花时间就分成小批来做,例如看单条的计算时间,如果在毫秒级,每次1万条,秒级每次100条,统计一次提交一次。如果数据之间关联不高,可以考虑使用多线程来做,注意不要处理到同一批数据就行。 --------------------编程问答-------------------- 放在存储过程中做,分成多个批次,让系统能承受得起 --------------------编程问答-------------------- 分批次,或者放到存储过程中 --------------------编程问答--------------------
引用 4 楼  的回复:
引用 3 楼 的回复:
10000条数据都显示在页面上,chrome也称不住啊

不是显示到页面上面,就拿生成账单来说嘛,某个客户下面有10000个雇员,而我要为这家客户生成这10000个雇员的所有费用并插入到数据库中去。这时候就要对这10000个雇员中的费用进行读写操作。



分批操作,分线程异步操作 --------------------编程问答-------------------- 这么大的数据量,楼主应该考虑分页,必须分页了 --------------------编程问答-------------------- 最好是分组来操作 --------------------编程问答-------------------- 下面代码只适用于.net4.0,
 private List<int> _data = new List<int>();
        private void select()
        {
            // 循环的并行运算
            System.Threading.Tasks.Parallel.ForEach(_data, (index) => { GetData(index); });
        }
        private string GetData(int i)
        {
           //要执行的操作
        }


如果你不懂怎么用,你可以去网上搜一下。 --------------------编程问答-------------------- 介绍

C# 4.0 的新特性之并行运算


Parallel.For - for 循环的并行运算  

Parallel.ForEach - foreach 循环的并行运算  

Parallel.Invoke - 并行调用多个任务  

Task - 任务,基于线程池。其使我们对并行编程变得更简单,且不用关心底层是怎么实现的 

PLINQ - 用于对内存中的数据做并行运算,也就是说其只支持 LINQ to Object 的并行运算 


对你有帮助的 --------------------编程问答-------------------- 数据量太大了,分页就好多了 --------------------编程问答-------------------- C# 4.0 的新特性之并行运算

Parallel.For - for 循环的并行运算  

Parallel.ForEach - foreach 循环的并行运算  

Parallel.Invoke - 并行调用多个任务  

Task - 任务,基于线程池。其使我们对并行编程变得更简单,且不用关心底层是怎么实现的 

PLINQ - 用于对内存中的数据做并行运算,也就是说其只支持 LINQ to Object 的并行运算 

补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,