您的位置:首页 > 大数据

优化较大数据量的处理效率的收获(寻找瓶颈)

2005-08-05 19:38 351 查看
周三拿到代码,没有看

准备先运行测试一下性能

手头上有一个电信发过来的文本文件,里面存着20几万条欠费用户数据(纳闷。。。为什么要用文本)

数据是逐行存放,即一行一条记录

web上实现的,就是通过导入这个文本,把用户数据导入一张表,然后根据这些数据,更新或插入另一张表

这里导入过程中还有一些涉及多表的约束行判断

ok,闲话少说,开始。。。。

噩梦开始。。。。。

。。。。。。。

。。。。。。。

从我开始导入开始,时间已经过去10分钟。。。30分钟。。。。2小时(中午吃饭时间,呵呵,上班时间会发疯的)

太夸张了吧?

查了下代码中是怎么处理的,

大致的思路如下:

通过StreamReader.Readline()先扫描文本,取出账号存入数组,然后遍历数组,插入数据库

大概的处理:

while(strLine!= null)
{
if(strLine.Trim().Length<=0)
{
strLine = sr.ReadLine();
continue;
}
all_user += "','"+strLine.Trim() + userPostfix;
strLine=sr.ReadLine();

}

for(int i=0; i<nameList.Length; i++)
{
判断是否在表1中,存在不插入

判断是否在表2中,存在不插入

判断是否在表3中,确定insert或update

生成sql;
}

执行sql;

两次几十万的循环,而且中间还有大量判断,并且和数据库交互,大致确定了瓶颈的存在,调试一下,发现瓶颈在于下面步骤

1、读取文本的过程,readline()应该比较慢

2、循环中大量判断,打断了cpu处理,而且交互数据库,效率降低得很厉害

找到问题所在,下面要做的就是想办法解决了

(待续)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐