我目前正在建立一個龐大規模的數據庫,其中有許多交易。 (插入,更新,選擇)使用MySQL MyISAMMySQL鎖定系統
而我正在考慮對敏感表使用LOCK TABLE和UNLOCK TABLE。如果發生以下情況,會發生什麼情況:
用戶A有一個更新過程(首先鎖定表),並且在過程中,用戶B和用戶C試圖訪問同一個表和行(不管它是更新/選擇)。
- B和C會立即得到關於表被鎖定的SQL錯誤嗎?
- MySQL在返回錯誤之前是否有鎖定超時?如果發生鎖定超時,我如何檢查服務器中的鎖定超時?
- 比鎖定表格更好的解決方案嗎?我們正在考慮創建一個工作隊列表。但我認爲表演會非常糟糕。
該表確實是敏感的,它會搞砸了,如果我不能阻止這個
謝謝您的回答
聽起來對你來說,你最好使用'InnoDB'引擎,因爲它支持事務和行級鎖定 – Stephan
MyISAM不能做事務。我建議你使用MariaDB或Percona,它更加穩定,默認情況下具有更好的鎖定功能。您不必進行任何手動鎖定。您的備份可能性始終是'backlog'和複製。 – DanFromGermany
您是否需要了解引擎類型及其怪癖,或者您是否想要根據您的規範檢查實施作業隊列的最佳方法? –