首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我是如何定位和处理大数据容易报错

我是如何定位和处理大数据容易报错

原创
作者头像
谭广健
发布2022-09-24 09:38:21
3550
发布2022-09-24 09:38:21
举报
文章被收录于专栏:谭广健的专栏谭广健的专栏

很长时间没跟大家共同进步了,一直都在忙某行业的深潜和发掘;所以疏远了技术的研究。刚好昨天遇到一个行业软件进行大数据导入后通过算法匹配出现报错的情况。简单地先说一下这个行业软件框架,用的是SQLlite数据库,WINFORM做的客户端,后端通过服务进行数据处理;客户端与后端服务就是通过HTTP协议传输。大体就这样,先不说什么多并发及用户控制等,反正现成的前人载树也就这样。那目前遇到的问题就是当用户导入大批量数据后,服务端写库成功后,要对数据进行逻辑分析将结果呈现在客户端。刚才都说因为客户端是通过HTTP协议传输所以客户端直读导入数据后post发送给服务端就是了,服务端写库完善,这块基本没毛病,毛病就是在对数据处理这边。大数据一处理就耗时而客户端等待时间过长就会报错。

数据量大报错
数据量大报错
且运算数据有误
且运算数据有误

那么我们先要把在那个处理数据耗时点找出来。怎么找呢?我这边就是通过在程序中埋入时间点,从程序开始埋入一个起步时间然后再在不同点进行时间比较;不废话直接上码。

先定义开始时间:

DateTime beforDT = System.DateTime.Now;
System.Diagnostics.Debug.WriteLine("Save_start====>" + beforDT);

获取执行过程中第一定义时间

DateTime afterDT = System.DateTime.Now;
TimeSpan ts = afterDT.Subtract(beforDT);
System.Diagnostics.Debug.WriteLine("Save_start==A==>" + ts.TotalMilliseconds);

第二节点时间

 afterDT = System.DateTime.Now;
 ts = afterDT.Subtract(beforDT);
 System.Diagnostics.Debug.WriteLine("Save_start==B==>" + ts.TotalMilliseconds);

这样就可以通过输出窗口获得程序的顺序和时间,对比就能查出那个耗时然后就进行处理。

通过分析后发现是由于程序中的UPDATE语句导致耗时比较长细看之下一个更新表竟然用了2条update所以就这里卡了,因此将其改为一条搞掂。

将2条update语句合并
将2条update语句合并

这样由原来执行的时间大大减半,之后再通过对程序的多线程和async异步进行处理;重新测试就解决大数据报错的问题,效率也是钢钢的。

优化后不再报错
优化后不再报错
运算也正常
运算也正常

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档