实时遍历400万数据的解决办法
---------------------------------------
用Vb做一个TCP数据接收程序,24小时运行在服务器,不间断的接收数据,数据流量100字节/秒。同时程序还集成了4个定时业务逻辑函数进行遍历数据库处理,每隔20秒处理一次,都是遍历数据库,数据库为Mssql,数据量400万条。每当程序执行到业务逻辑处时界面就出现停顿现象,占用率达到80%。请问:如何处理这4个业务逻辑?我想这样处理:主程序还用VB实现,单独把业务逻辑拿出来做成独立程序,用VC做成后台运行的服务器进程,每个独立处理为线程。请各位老师指导一下这样做可否,需要注意什么问题。

解决方案 »

  1.   

    界面停顿考虑使用支持多线程的语言,比如VB.NET VC。
    或者将TCP通讯部分用ActiveX改写,换作异步模式。
      

  2.   

    400万条数据
    估计只有优化处理的逻辑了,而不在于用VB VC上。
      

  3.   

    tcp读取函数采用C++编写,确实不是异步的,但是在前期没有大数据量的项目中不存在速度问题。就是在这个项目中使用了遍历数据库逻辑,且都是20秒执行一次,具体语句如下:1、select SUM( StopTime) AS StopTime from vwDetail     WHERE DtuId= '90539004'  AND StationId= '8'  AND  EnqType NOT IN('07')      AND   时间段语句其中:StopTime  为 int(4)2、select count(distinct CarCode )  from vwDetail   WHERE DtuId= '90539008'  AND  时间段语句
      

  4.   

    doevents
    这个用了,中心程序过于复杂,产生莫名的错误,不能采用。
    想一次性解决问题。
      

  5.   

    能否在 sql 的过程中通过触发实现业务逻辑。
      

  6.   

    别用DB了 用文件MD5查找吧~
      

  7.   

    两个程序应该就可以了。
    接收程序将接收到的数据每20秒保存一个文件,然后将该文件移动到约定的文件夹中。
    处理程序定时扫描目录,将文件中的数据导入数据库,然后执行业务逻辑函数。既然最高CPU占用只到80%,说明处理速度足够。
    通过数据文件的方式降低了两部分的耦合度。