惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
云风的 BLOG
云风的 BLOG
B
Blog
博客园 - Franky
I
InfoQ
A
About on SuperTechFans
博客园_首页
L
LangChain Blog
量子位
腾讯CDC
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
美团技术团队
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
雷峰网
雷峰网
MongoDB | Blog
MongoDB | Blog
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
G
Google Developers Blog
Last Week in AI
Last Week in AI

博客园 - ivanking

(转载)常用格式转换 smil教程(转载) Nhibernate之初体验(一) 构建安全的Web Service Getting start with nhibernate) CrystalReport开发常见错误总结 SQL Server日志文件的相关处理(转帖) 常用正则表达式收集 - ivanking - 博客园 Nov 2th 2005 Aug 13th 2005 Sep 5th 2005 ---- Sep 12th 2005 Aug 31th 2005 Aug 26th 2005 优化较大数据量的处理效率的收获(总结,疑问) 优化较大数据量的处理效率的收获(sql性能优化) 优化较大数据量的处理效率的收获(优化思路) 优化较大数据量的处理效率的收获(前言) 在域控制器上vs.net 2003无法调试的解决办法 几个js验证函数 - ivanking - 博客园
优化较大数据量的处理效率的收获(寻找瓶颈)
ivanking · 2005-08-05 · via 博客园 - ivanking

周三拿到代码,没有看

准备先运行测试一下性能

手头上有一个电信发过来的文本文件,里面存着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处理,而且交互数据库,效率降低得很厉害

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

(待续)