【发布时间】:2013-04-26 18:21:57
【问题描述】:
我有一个为作业汇集数据库的后端。为了促进系统加速,我希望多个后端轮询数据库中的作业。
工作表: jobid,日期,操作,完成
有人告诉我这应该通过行锁定来完成。后端将执行SELECT ... LIMIT 1 FOR UPDATE; 但是,经过一些测试,选择不会跳过锁定的行,并且会阻塞直到该行被解锁。
如果有办法获得第一个未锁定的行(使用 FOR UPDATE)?
谢谢。
【问题讨论】:
我有一个为作业汇集数据库的后端。为了促进系统加速,我希望多个后端轮询数据库中的作业。
工作表: jobid,日期,操作,完成
有人告诉我这应该通过行锁定来完成。后端将执行SELECT ... LIMIT 1 FOR UPDATE; 但是,经过一些测试,选择不会跳过锁定的行,并且会阻塞直到该行被解锁。
如果有办法获得第一个未锁定的行(使用 FOR UPDATE)?
谢谢。
【问题讨论】:
我假设您正在以某种方式标记该行,以表明某个后端作业正在处理它。如果是这样,您可以按照以下步骤操作:
【讨论】: