1
是否可以使用MySQL獲得給定行上的顯式獨立鎖定?使用MySQL在給定行上顯式鎖定
我要的是:
- 讀取一行,並獲取其上的鎖;如果該行已被鎖定,等待鎖被釋放
- 進行一些處理
- 寫的行,釋放鎖
我認爲SELECT FOR UPDATE將是我的解決方案,但由於它需要明確的事務,我不能做到以下幾點:
- 讀&鎖行1
- 閱讀&鎖定第2排
- 做某事
- 寫&釋放行2
- 做某事
- 寫&發佈第1行
(或顛倒步驟4和6.)
基本上,我希望能夠在任何時候明確獲取任何行上的&版本的鎖,而無需等待使用COMMIT
同時釋放所有鎖。因此,沒有交易就做到這一點。
用MySQL可以實現嗎?
我試圖避免使用盡可能多的連接,因爲有鎖定的記錄,並且不幸的是觸發器不提供故障轉移,以防進程死亡而不解鎖記錄! – Benjamin
這很有趣,因爲使用文件系統似乎是一件容易的事情(鎖定任何文件,隨時解鎖,並且在文件關閉時釋放故障轉移鎖),但看起來相當複雜數據庫! – Benjamin
@Benjamin:*通常*試圖儘可能縮短交易時間,所以步驟4和步驟6之間的時間是非常重要的,以至於這種細節並不重要。第5步中究竟發生了那麼久?是否真的有必要釋放第一個鎖,然後保持第二個鎖? – eggyal