优化较大数据量的处理效率的收获(寻找瓶颈)
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处理,而且交互数据库,效率降低得很厉害
找到问题所在,下面要做的就是想办法解决了
(待续)
准备先运行测试一下性能
手头上有一个电信发过来的文本文件,里面存着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处理,而且交互数据库,效率降低得很厉害
找到问题所在,下面要做的就是想办法解决了
(待续)
相关文章推荐
- 优化较大数据量的处理效率的收获(前言)
- 优化较大数据量的处理效率的收获(优化思路)
- 优化较大数据量的处理效率的收获(sql性能优化)
- 优化较大数据量的处理效率的收获(总结,疑问)
- Android, BaseAdapter 处理大数据量时的优化
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview效率检视工具,分析程序运行速度!并讲解两种创建SDcard方式!
- java处理较大数据量到mysql
- 基于Hadoop的云盘系统上传和下载效率优化及处理大量小文件的解决方法
- mysql处理上百万条的数据库如何优化语句来提高处理查询效率
- (转)【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- 基于Hadoop的云盘系统上传和下载效率优化及处理大量小文件的解决方法
- mysql处理大数据量的查询速度究竟有多快和能优化到什么程度
- 寻找丑数及关于程序优化效率的一点说明
- Android, BaseAdapter 处理大数据量时的优化
- MongoDB开发学习 开天辟地,经典入门 解决关系型数据库大数据量处理的瓶颈问题
- 寻找丑数及关于程序优化效率的一点说明
- silverlight大数据量录入优化-数据库处理
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- A* 寻路效率优化(使用链表+插入排序处理开放列表)