none
“数据汇总”处理程序开发 RRS feed

  • 问题

  • 数据库中跑了“45”个“作业”,请问这些作业是并发的吗?

    问题一:是不是每个作业都采用了一个线程来跑的???


    这些作业的功能是:
        将数据从“数据库A”取出来,经过处理存储到“数据库B”,历史数据存储在“数据库C”。


        问题二:为了保证数据的完整性,同时使数据库是单纯的“数据仓库(不包含处理逻辑)”,打算开发一个Winform程序来处理这个过程,如果用“Winform”是不是应该采用“45”个线程进行处理。    “数据库作业”是定时执行的,那么Winform程序中是不是只能使用定时器了???

         问题三:比如“中间数据库”的某一个表中有“10”条数据,“数据库”可不可以通知下Winform程序,让它启动汇总程序,而不是要让Winform程序去不断的查询对应的表???
       
         问题四:之所以要采用45个线程是因为数据量大,数据汇总过程复杂,而且10钟内要汇总完,所以只能分类来汇总,因此多开了些线程。大师,您还有其它的建议没?


    Science and technology is my lover.

    2012年12月27日 1:57

答案

  • 纯计算的任务只和CPU个数和核心数相关,也就是说对于一个核心的CPU而言,45个线程不但没有1个线程的效率高,反而更慢。

    SqlServer应该不是每个作业都创建一个线程来执行,而是根据设置的CPU和核心数来分配任务。

    可以不用定时器,而是自己启动一个线程来检测当前的时间,如果时间点到了,就启动一个任务。

    SqlServer有通知机制(sql server 2005以上版本支持,包括2005),通知事件包括增、删、改。当然,你的程序首先先要注册,而且要一直保持运行,否则注册就失效了。

    2012年12月27日 5:16

全部回复

  • 纯计算的任务只和CPU个数和核心数相关,也就是说对于一个核心的CPU而言,45个线程不但没有1个线程的效率高,反而更慢。

    SqlServer应该不是每个作业都创建一个线程来执行,而是根据设置的CPU和核心数来分配任务。

    可以不用定时器,而是自己启动一个线程来检测当前的时间,如果时间点到了,就启动一个任务。

    SqlServer有通知机制(sql server 2005以上版本支持,包括2005),通知事件包括增、删、改。当然,你的程序首先先要注册,而且要一直保持运行,否则注册就失效了。

    2012年12月27日 5:16
  • starry 你好,

    DroidXgnaW 回答了你的问题,所以将会将其标记为答案,如果你 觉得没有帮助到你,请随时取消标记为答案。

    另外,关于SQL 及数据的问题,请使用SQL Server 论坛。

    感谢你的理解与支持。


    Lisa Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年1月2日 9:22
    版主