2013-04-26 43 views
1

我有一個後端爲作業池數據庫。爲了便於系統加速,我希望多個後端輪詢數據庫以獲得作業。獲取第一個解鎖行

工作表: 作業ID,日期,動作,完成

有人告訴我,這應該與行鎖定來完成。後端將執行SELECT ... LIMIT 1 FOR UPDATE;但是,經過一些測試後,選擇不會跳過鎖定行,並會阻塞,直到該行解鎖。

如果有辦法獲得第一個解鎖的行(與FOR UPDATE)?

謝謝。

回答

0

我假設你以某種方式標記行,以顯示某些後端作業正在處理它。如果是這樣,你可以遵循這樣的程序:

  1. 選擇....如果STATUS = 'OPEN' LIMIT 1
  2. 更新......將狀態設置= '跑步' 在哪裏工作,重點=?和狀態=「OPEN」
  3. 如果更新計數<> 1個,那麼其他一些輪詢上去的時候,第一,所以環回 選擇