zoukankan      html  css  js  c++  java
  • 利用快照实现两地数据库的同步

    这两天帮个客户改进同步两个数据库中某些表数据的操作!原来是通过写代码复制DataSet实现的,但数据量达到万以上后,时间就有些长了!于是我想改用存储过程来实现。我写代码测试过,一千多条数据,写代码操作要3秒多,存储过程则0点0几秒;一万多条数据的话,代码操作要9秒多,存储过程则0点几秒;上到十万的话,代码操作就有排等了!!
    而,写存储过程的话,有个跨库操作的问题,找了些相关资料和咨询了些前辈,整理出如下方案(未测试):

    两个数据库A、B间的数据同步方法,采用快照技术!假设A同步B中数据!

    1,为要同步的表创建快照日志(在表所在的数据库端,即B端创建)
     Create snapshot log on t_yamagl

    2,在A端建立到B端的数据库链路
     Create database link LINK_H_TS(链路名)
     Connect to username(用户名) identified by xxxxxxx(密码) using k600i(数据库服务器名);

    3,在A端建立快照
     Create snapshot SNAP_H_TS AS(快照名)
     Select * from t_yamagl@LINK_H_TS(要同步表名@链路名);
     Alter snapshot SNAP_H_TS(快照名) refresh fast start with sysdate
     Next round(sysdate+0.5)+18/144;
      

    参数说明:
       1、fast与complete:fast(默认值)使用日志比较两表的差异,只刷新日志差异的内容。Complete是重建快照,需时很长,应用较少。
       2、start with:快照第一次执行的时间;
       3、next:下次执行的时间,必须指定next才能使快照定时运行;
       4、关于时间设定:sysdate是系统当前时间,而定时运算中以一天为基本单位分成很多时间片,1代表一天,1/24表示一天分成24份即一小时后,1/1440=1/24*60即一分钟后,类似的1/144表示10分钟后,1/2880表示30秒后。

    4,像在A端用自己的表一样使用快照SNAP_H_TS进行复制即可!

  • 相关阅读:
    confluence文档添加右侧浮动导航
    关于惊群问题
    stun server list
    linux 相关代码路径备忘。
    test
    Linux Kernel Packet Traveling
    socketio的静态文件路由处理。
    防蓝光镜片
    Less(21)Cookie Injection- Error Based- complex
    Less(20)POST
  • 原文地址:https://www.cnblogs.com/yamagl/p/554005.html
Copyright © 2011-2022 走看看