全部,如何解決併發問題?
我在我的應用程序中使用MySql 5.7。我試圖使我的保存功能併發安全。我會用一個例子來解釋。
例如: 我有兩個管理員用戶Admin 1和Admin 2.我們有一個產品表,我們有一個產品表條目,產品代碼爲「P1」。假設管理員1和管理員2登錄到系統中,並嘗試同時更新代碼爲「P1」的產品條目。
我需要通知其中一個用戶,您正在嘗試修改的記錄正在被另一個用戶更新,並在一段時間後再次嘗試。
我正在使用事務並沒有改變MySql的默認事務級別(可重複讀取)。我試圖通過使用「SELECT FOR UPDATE」來解決它(包括一個where條件來檢查修改時間)。這個「where」條件將解決那些已經提交的事務的併發問題。但是,如果兩個事務同時開始並且第一個事務在鎖定超時之前被提交,那麼當第二個事務執行時,它會覆蓋第一個事務。
請分享您的想法提前
你可以在臨界區出現之前做一個'LOCK TABLES product WRITE'。不要忘記事後解鎖。 – apokryfos
@apokryfos鎖定整個表到一個完成單個記錄的編輯是不是一個真正有效的解決方案 – Shadow
我想它可以是解決方案之一:使用InnoDB引擎和'選擇...更新' – Wizard