循环10000条数据出现Request Time out
最近在做系统的时候出现了一个很棘手的问题。首先我从数据库中取得10000条数据,然后循环这10000条数据,
在循环中有通过数据中的某个字段又到数据库里面去查询。而且很多复杂的运算过程。
少量数据还能运行,当运行大量数据时就会出现Request Time out.
由于没易做图量数据的处理经验,还望各位易做图指点。
--------------------编程问答-------------------- http://kb.cnblogs.com/a/1719689/异步 --------------------编程问答-------------------- 数据分页,每次只取一部分数据 --------------------编程问答-------------------- 10000条数据都显示在页面上,chrome也称不住啊 --------------------编程问答--------------------
不是显示到页面上面,就拿生成账单来说嘛,某个客户下面有10000个雇员,而我要为这家客户生成这10000个雇员的所有费用并插入到数据库中去。这时候就要对这10000个雇员中的费用进行读写操作。 --------------------编程问答-------------------- 分批尝试 --------------------编程问答-------------------- 有两招建议:
一是尽量加快单条的计算消耗的时间,办法很多建立索引是最直接有效的一种,另外要尽量减少大数据的查询,比如需要查询的记录先查好,单独放到临时表,在临时表上增加索引查询,会比直接在表上建立索引查询要快,也不会产生死锁。 另外就是要尽量优化算法。
二是分拆,一次做太花时间就分成小批来做,例如看单条的计算时间,如果在毫秒级,每次1万条,秒级每次100条,统计一次提交一次。如果数据之间关联不高,可以考虑使用多线程来做,注意不要处理到同一批数据就行。 --------------------编程问答-------------------- 放在存储过程中做,分成多个批次,让系统能承受得起 --------------------编程问答-------------------- 分批次,或者放到存储过程中 --------------------编程问答--------------------
分批操作,分线程异步操作 --------------------编程问答-------------------- 这么大的数据量,楼主应该考虑分页,必须分页了 --------------------编程问答-------------------- 最好是分组来操作 --------------------编程问答-------------------- 下面代码只适用于.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