V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qq2549112
V2EX  ›  问与答

请问 时间戳 增量同步 如何防止记录跳过?求 sql

  •  
  •   qq2549112 · 2015-07-04 00:38:59 +08:00 · 2912 次点击
    这是一个创建于 3426 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我需要实现 基于时间戳 来实现增量同步 功能

    但我发现,这样有一定几率 出现 丢数据的可能性

    网上我也搜了一些文章查看了 还是有些不知所措

    参考文章 http://www.cnblogs.com/siqi/p/4316992.html

    想问下各位前辈, 有更好的方案吗

    求sql

    4 条回复    2015-07-04 12:14:39 +08:00
    Septembers
        1
    Septembers  
       2015-07-04 01:04:56 +08:00   ❤️ 1
    see http://deltasql.sourceforge.net/
    刚刚搜索 delta sync 看到的 或许对你有用
    gamexg
        2
    gamexg  
       2015-07-04 08:02:16 +08:00   ❤️ 1
    逻辑合理就没问题。

    每次先取目的表最新的时间戳A获得上次更新的位置,
    然后取源表时间戳<b>大于等于</b>时间戳A的记录,使用时间戳升序排序,可以随意 limit 。
    不要改变顺序,即先处理最旧的循环处理每一条记录即可。

    这样的逻辑任意时间中断接着重新执行也不会丢失数据,缺点是在每次更新时会重复处理时间戳=A的的记录,所以需要目标表用主键或添加唯一索引等来保证不会重复。

    虽然将第二步改成<b>大于</b>可解决重复的问题,但是有可能丢失时间戳相同的记录。
    qq2549112
        3
    qq2549112  
    OP
       2015-07-04 12:14:34 +08:00
    @gamexg 谢谢 我再研究 研究
    qq2549112
        4
    qq2549112  
    OP
       2015-07-04 12:14:39 +08:00
    @Septembers 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5339 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:28 · PVG 15:28 · LAX 23:28 · JFK 02:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.