只有100条数据老超时怎么优化,求方案

问题描述

数据表数据很少不超过100条但不停的在变,分析一条里面的数据耗时不到1秒。我现在不断遍历进行分析while(true){DateTimedate1=DateTime.Now;DataViewdv=db.ExecuteDataView(sql);//数据不超过100条,但不停的在变for(inti=0;i<dv.Table.Rows.Count;i++){xx(dv[i][0]);//分析数据;}doublett=(DateTime.Now-date1).TotalMilliseconds;if(tt>3000){超过3秒发信息警告分析太慢了}}现在老是收到分析超时的信息。怎么弄才能提高效率?有人说用异步或多线程。异步,xx分析函数我放到一个委托里面也会出现超时但比直接遍历好很多。多线程基本没法用,遍历时把xx函数放到线程里不久就会内存泄漏。怎么才能提高效率,在不存在内存泄漏的情况下把CPU打上去,让其分析的更快。。

解决方案

解决方案二:
这点数据,最大可能性是你分析方法有问题,100条数据怎么也不可能超过1秒.具体问题你要贴出来sql脚本内容才好说
解决方案三:
你解决多线程内存泄漏问题就好了嘛看你的代码,内存泄漏是因为while(true)无限制创建新线程,解决思路是控制正在计算的总线程数,只有当一批计算完成后才开始下一批
解决方案四:
可以合并一起请求的就一起合并,然后确认到底那部分耗时最多
解决方案五:
引用1楼shoppo0505的回复:

这点数据,最大可能性是你分析方法有问题,100条数据怎么也不可能超过1秒.具体问题你要贴出来sql脚本内容才好说

100条数据分析时需要调用其他地方的数据,基本无法优化了。我要直接把CPU打上去,但不能有内存泄漏
解决方案六:
分析一条里面的数据耗时不到1秒(0.9秒是不到1秒吧?)那么分析100条数据耗时不到100秒(8、9十秒也是正常的)那么你if(tt>3000){超过3秒发信息警告分析太慢了}显然是太苛刻了提高效率的手段是优化xx中的算法优化后仍不能满足要求,则可使用并行处理for(inti=0;i<dv.Table.Rows.Count;i++)....改成Parallel.ForEach(Partitioner.Create(0,dv.Table.Rows.Count),(W)=>{for(inti=W.Item1;i<W.Item2;i++)....});
解决方案七:
写了个监控线程完成的小程序,贴给你classCountDownLatch{privateobjectlockObj=newObject();privateintcounts;publicCountDownLatch(intcounts){this.counts=counts;}publicvoidAwait(){lock(lockObj){while(counts>0){Monitor.Wait(lockObj);}}}publicvoidCountDown(){lock(lockObj){counts--;Monitor.PulseAll(lockObj);}}}

classTasks{privateCountDownLatchlatch;privateObjectdata;publicTasks(CountDownLatchlatch,Objectdata){this.latch=latch;this.data=data;}publicvoidAnalysis(objecto){//分析dataSystem.Threading.Thread.Sleep(newRandom().Next(3)*1000);this.latch.CountDown();}}

CountDownLatchlatch=newCountDownLatch(100);for(inti=0;i<100;i++){ThreadPool.QueueUserWorkItem(newWaitCallback(newTasks(latch,newobject()).Analysis),latch);}latch.Await();//全部线程执行完成,继续

解决方案八:
数据不多,但是程序很慢,那么问题基本上就存在于你的数据库查询操作太多,数据的分析和计算是很快的,你不能每次都去数据库查询数据,再去计算。思路是尽可能的减少数据库查询操作。如果换种办法的话我建议这样,你采用WPF中数据绑定的思想,DataView绑定一个查询的数据源,实现INotifyPropertyChanged接口,数据源变化时DataView的数据会跟着变化,你直接操作DataView中的数据,这样会比较快。

时间: 2024-10-21 16:36:52

只有100条数据老超时怎么优化,求方案的相关文章

java Web 提示信息优化求方案

问题描述 前提:项目分 dao service action 三层问题1: dao层报错了!怎么更好的提示给用户!或者让用户知道具体信息呢! 异常切面? (不能每次都是系统异常了,不是很友好)问题2: 对应网站来说,用户的操作很多! 提示语 很多!怎么样统一管理起来呢! (记得新浪有个站是 写在一个 js文件里面) 解决方案 我们是这样弄的:(1)异常分类:业务类的异常(系统给出提示可以指导用户):用实际的业务异常对应的信息提示用户:系统异常:把异常信息记录日志,并提示用户系统出现错误,请与系统

极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)     实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方法所耗费的时间.     本实验中所用到工具为VS2008和SQL SERVER 2000.SQL SERVER 2008,分别使用5中方法将100万条数据导入SQL 2000与SQL 2008中,实验环境是DELL 2850双2.0GCPU,2G内存的服务器.感兴趣的朋友可以下载源代码自己

|zyciis| 200分第二贴求:既然没有办法在一个网站里面放多个Global 那我在Global中写的100+条URL重写的话要怎么来提高性能 在线

问题描述 protectedvoidApplication_BeginRequest(Objectsender,EventArgse){stringRawUrl=HttpContext.Current.Request.RawUrl;try{RawUrl=System.Text.RegularExpressions.Regex.Replace(RawUrl,@"(['""]?)(/Product/View/)(d+)(.aspx)(1)","$1/Produ

急急-怎么能 一次添加多条数据

问题描述 怎么能 一次添加多条数据 我是个新手,我是在做一个网站的购物车,数据是显示在GridView里面的,当一个用户在点击结算的时候,给数据库的一个订单表添加用户选定的商品数据. 怎么可以一次添加多条数据啊 急 急 急 求各位大神帮助一下 跪求 sql语句 解决方案 每个SQL语句之间用分号分隔就好了,像下面这样,可以一次性执行的,可以返回总影响记录数.insert into table1(c1c2c3) values('1''1''1');insert into table2(c1c2c3

100万条数据存入mongo,通过java代码实现,要求时间在5秒之内,或者越快越好

问题描述 100万条数据存入mongo,通过java代码实现,要求时间在5秒之内,或者越快越好 通过java代码将oracle中的100万条数据查询出来,然后直接插入mongo数据库中,要求时间越短越好.我从oracle中将100万条数据查询出来花费了3秒左右.希望存入mongo的时间在5秒以内.请问各位大神有没有好的办法,谢谢. 解决方案 你可以买一个性能好一些的电脑,这样会比较快的. 解决方案二: 你把oracle查询到的数据分下类,优化时间在2秒内,存到Mongo可能会快点,最近公司也是遇

1亿条数据如何分表100张到Mysql数据库中(PHP)_php技巧

下面通过创建100张表来演示下1亿条数据的分表过程,具体请看下文代码. 当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度.笔者做了一个简单的尝试,1亿条数据,分100张表.具体实现过程如下: 首先创建100张表: $i=0; while($i<=99){ echo "$newNumber \r\n"; $sql="CREATE TABLE `code_".$i."` ( `full_code` char(10) NOT NULL,

WebGIS项目中利用mysql控制点库进行千万条数据坐标转换时的分表分区优化方案

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 项目中有1000万条历史案卷,为某地方坐标系数据,我们的真实需求是将地方坐标系坐标反转成WGS84坐标,如果现在需要将其转换成百度坐标系数据.常规方案是先建立好整个该市的本地坐标和百度坐标之间的控制点库后再进行转换.但是在具体实施中发现转换特别慢,由于控制点库也有200多万条记录,大概一个点需要一秒钟才能转换完. 2.将Update变成Insert关键字段值

easyui-Easyui 中 combobox 绑定2000多条数据 自带检索特别卡 如何优化一下

问题描述 Easyui 中 combobox 绑定2000多条数据 自带检索特别卡 如何优化一下 Easyui 中 combobox 绑定2000多条数据 自带检索特别卡 如何优化一下 解决方案 可以改成异步的. 解决方案二: 改成输入关键字检索的时候才返回和输入关键字一样的数据,而不是一次性发2000条数据来在客户端进行检索 $('#xxxx').combobox({url:'xxxxxx',mode:'remote' 解决方案三: 可以改成异步的.

求助大神,爬虫爬取京东评论数据爬一小部分(大概100条评论)就爬不到评论了,返回空值了

问题描述 求助大神,爬虫爬取京东评论数据爬一小部分(大概100条评论)就爬不到评论了,返回空值了 python 爬取评论数据,爬到一百多条评论,就返回空值了,无法继续爬下去了 解决方案 用fiddler调试下,看下是不是京东有限制.比如让你过多少时间再访问,或者要你输入验证码. 解决方案二: 如果要爬京东评论,已经有大牛写出很成熟的代码了,推荐大家去看看,专门讲了怎么突破京东的限制:http://blog.csdn.net/youmumzcs/article/details/51396283