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

分页查询时,排序字段被并发修改的情况应该如何处理?

  •  
  •   CYKun · 2019-06-14 14:28:15 +08:00 · 1047 次点击
    这是一个创建于 2015 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现有一张带有更新时间字段的表,要求

    1. 一个生产者,按更新时间升序读取该表,并将记录写入队列
    2. 若干个消费者,从队列里读取记录,对其进行操作后写回数据库,并刷新其更新时间

    问题出在生产者这里,最初我是直接按照更新时间排序后,分页读取数据,往队列里塞完一页后读取下一页。但是在这期间消费者已经把部分记录的时间更新了,这时读取第二页的话就有部分记录被跳过去了。如果一直读第一页的话,又会出现部分记录重复进入队列的问题。

    求教各位 v2er,对这种情况有什么好的解决办法没有?

    3 条回复    2019-06-14 15:52:10 +08:00
    sesmond
        1
    sesmond  
       2019-06-14 15:10:07 +08:00
    保证你处理过的数据不会再查询到,然后正常读就行。分页查完了最后再确认一下还有没有。
    如果你的时间字段有逻辑冲突那就换一个。
    mooncakejs
        2
    mooncakejs  
       2019-06-14 15:39:52 +08:00 via iPhone
    用 ID 排序
    HuHui
        3
    HuHui  
       2019-06-14 15:52:10 +08:00 via Android
    版本号
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1344 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:44 · PVG 01:44 · LAX 09:44 · JFK 12:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.