在一个系统集成项目中,需要将一台数据库服务器上的数据完整复制到另外一台数据库服务器上,没有网闸,现在使用的是insert into 表名 from select .... 的方式,以存储过程的方式定期执行进行数据复制的。具体过程是先判断数据有无差异性,无差异则丢弃,有差异即写入新库。需要支持7000万条数据的复制。但实际效率太低,每一次执行都要大半天时间。哪位大侠有没有更好的操作方法,最好能考虑到在数据导入过程中,服务器的IO能力问题?

解决方案 »

  1.   

    1、做触发器直接触发到目标服务表里。
    2、做一个中间服务专门负责实时数据传输,把A服务器上的所有表写触发器,触发到一张表里,然后通过服务扫描这张表,发现有同步的信息就连接目标数据库把数据I,U,D过就可以了!
      

  2.   

    1.第一次全量7000W数据复制可以用 insert into .....
    2.之后的增量数据写入新库,可以在存储过程中写:
    select .. from A
    minus
    select .. form B 
    取出数据放入游标,再insert into 新表。这样只会导入有差异的几K或几W条数据了。
      

  3.   

    如果是这种情况,建议如下:
    1、第一次将所有的数据都拷贝过来!记录一个增量值,比如时间或主键编号。
    2、做一个Windows服务去查找增量值大的数据。这应该数据量很少,你可以把服务内线程的运行时间设置为1分钟或者更少。这样可以保证数据的实时性和完整性!
    3、每次同步完成后都记录此次的最大增量值,以便下次使用。这样就是一个完整的同步了吧!