解决方案 »

  1.   

    插入数据库不推荐用多线程,可以开了数据库链接暂时不关,如果数据量巨大可以用批量插入的bulk copy方法,楼主能说下是出于什么情况会要多线程插入数据吗
      

  2.   

    推荐的是根cpu数量一致或其2倍左右
      

  3.   

    哈哈,最近也在做类似的工作; Thread myThread = new Thread(new ThreadStart(WriteDataToSql));
                myThread.Start();
    或者你在一个线程池中也可以,只是效率可能会低点;
      

  4.   

    能请教下这样做法的意义吗,再可以打开数据库链接不关闭,循环插入数据,c#也支持一次执行多条insert语句,而且还有bulk copy的情况下为什么会选择线程方式去插入数据
      

  5.   

    web本身就是个多线程,跟winfrom 区别不大吧?
      

  6.   

    能请教下这样做法的意义吗,再可以打开数据库链接不关闭,循环插入数据,c#也支持一次执行多条insert语句,而且还有bulk copy的情况下为什么会选择线程方式去插入数据
    因为不只是插数据啊。还有包括抓数据,插数据,和其他一些逻辑处理的我只是把这个问题简单的表达出来。我怕说得复杂了,把你们搞晕了
      

  7.   

    楼主听听我的建议吧,首先你从网页上获取数据,可以是多线程也可以是唯一线程,数据归总到一个集合,后台起一跟线程,每隔一段时间去copy这个集合,并把集合清空等待下次填充。对copy的集合做去重处理,以免插入重复数据。多线程或者单线程检查是否与数据库有重复,可以预先抽取数据库数据到缓存,这样效率会比较高。把做完去重的数据整理出来,拼接成一句或多句可以一次执行的sql,执行sql(这里如果数据量巨大可以考虑用bulk copy),最后如果有缓存,更新下缓存,等待下次执行开始。
      

  8.   

    这点我并不是很同意,如果真要使用多个线程去操作数据库,就必须要打开多个数据库链接或者使用链接池,因为对于单个数据库链接来说,简单sql语句是顺序执行的,你的进程只是同时把insert语句加入到sql的执行队列而已,不管你加的速度有多快,sql最终还是一条一条来执行,并没有并发效果
      

  9.   

    因为要做个程序去批量从网上抓数据,然后加到数据库,我现在是单线程嘛。速度太慢,所以想如果用多线程速度就会快很多。
    对于找取数据部分用多线程,然后生成的SQL保存一下,开一个专门存储的线程。运行SQL语句。