有个问题想请教一下,我现在有个稳定没五秒钟会更新一次数据(3000条),需要保证和数据库同步;每条记录在SQL中对应两张表,需要将这6千张表在五秒内更新。
我想用批量插入(比如BULK),但是只能先存在一张表再拆分(这样效率也会很低),而且从这些文件获取到的数据我需要做一些加工才能存放到相应的表中,现在暂时没有找到好的解决办法,不知道有没有人有过类似的经历,请指点迷津,谢谢!
我做个几个测试:
单独执行一条数据(存储过程),需要129ms,可想而知3000条就不满足了;
如果在SQL里循环执行,需要12秒;
直接通过BULK更新一张表,只需要1791ms,效率是很高,不过怎么样拆分,或者说即便是拆分出去了,还是会影响效率;当然还是就是多弄几台服务器(分布式),但是我想的是现在的计算也很简单,还是想看看能不能在一台服务器上做文章。看看有没有人有过类似的经验可以提供,谢谢!

解决方案 »

  1.   

    出个馊主意,Bulk进一个中间表,中间表建触发器,同步更新到你要的两个表
      

  2.   

    用复制吧(注意这是高可用的其中一种,英文叫replication,而不是copy)
      

  3.   

    Bulk可以用,但是现在我的数据有六千张表需要同时更新,虽然表名不一样,但是结构一样,使用触发器级联更新六千张表我觉得不太靠谱;
      

  4.   

    老纳看了几年的复制,订阅,同步,BULK,但一直都没有深究。咋老是定不下心来弄清呢
      

  5.   

    另外,我想到用触发器去级联更新等操作,不过由于数据库中的表太多,需要同时更新的就要有六千张!故在一张表里面就要去上千个触发器,想到这里我就不敢去设计了。
    不过我现在也没有想到好的解决办法,如果用程序去代替SQL操作效率肯定会要打些折扣,所以我还是想先在数据库这端寻求解决办法。 
      

  6.   

    你要重点看:发布/订阅 那个,有merge replication /transaction replication/peer-to-peer replication这些(我看的是英文教材,所以不知道怎么翻译),这个功能不是说单纯的复制一个出来,你看的那个应该叫数据库快照。