获得第一个解锁行

时间:2013-04-26 18:21:57

标签: java mysql innodb polling

我有一个后台,用于为作业汇集数据库。为了方便系统加速,我希望多个后端轮询数据库以获取作业。

工作表: 作业ID,日期,动作,完成

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

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

感谢。

1 个答案:

答案 0 :(得分:0)

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

  1. 选择....其中STATUS =' OPEN'限制1
  2. 更新...设置STATUS =' RUNNING' Job-Key =哪里? AND STATUS =' OPEN'
  3. 如果更新计数<> 1然后其他一些poller首先得到它,所以循环回到 选择