我正在開發一個相對簡單的自定義Web應用程序,並在後端安裝了MySQL MyISAM數據庫。不知何故,我想避免經典的併發覆蓋問題,例如該用戶A覆蓋用戶B的編輯,因爲B在A完成之前加載並提交了一些編輯表單。我應該使用MySQL的自定義'鎖'表嗎?
這就是爲什麼我想以某種方式鎖定顯示編輯表單的行。然而...
- 正如我所說,我使用的MyISAM,據我所知,它不支持行級鎖。另外,我不確定是否持有「真正的」MySQL鎖定幾分鐘是建議的做法。
- 我對交易並不十分了解,但從我所看到的看來,它們看起來像是在一個連接中使用。
- 使用像Git這樣的衝突合併系統真的不是一個選項。
行將保持鎖定幾分鐘。併發性非常低:有六位用戶隨時使用該應用程序。
我現在正在計劃使用一張表,詳細介紹哪些用戶正在做什麼以及從何時開始。當其他用戶最近打開它時(例如正在處理它),應用程序可以決定不顯示編輯表單。在保存表格時,這個假鎖將被刪除。
會這樣嗎?我應該怎麼做才能避免死鎖,活鎖和所有這些東西?
感謝您的明確答案!我想我會用相當短的到期時間,並用AJAX以某種方式刷新它們。 – 2011-06-13 07:17:59