【问题标题】:Getting first unlocked row获得第一个解锁行
【发布时间】:2013-04-26 18:21:57
【问题描述】:

我有一个为作业汇集数据库的后端。为了促进系统加速,我希望多个后端轮询数据库中的作业。

工作表: jobid,日期,操作,完成

有人告诉我这应该通过行锁定来完成。后端将执行SELECT ... LIMIT 1 FOR UPDATE; 但是,经过一些测试,选择不会跳过锁定的行,并且会阻塞直到该行被解锁。

如果有办法获得第一个未锁定的行(使用 FOR UPDATE)?

谢谢。

【问题讨论】:

    标签: java mysql innodb polling


    【解决方案1】:

    我假设您正在以某种方式标记该行,以表明某个后端作业正在处理它。如果是这样,您可以按照以下步骤操作:

    1. 选择 .... 其中 STATUS='OPEN' LIMIT 1
    2. 更新...设置 STATUS='RUNNING' 其中 Job-Key=? AND STATUS='打开'
    3. 如果更新计数 1 则其他轮询器首先得到它,所以循环回到 选择

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      相关资源
      最近更新 更多