樂觀鎖:
優勢:適合讀多寫少的業務,併發性好,提高系統吞吐量。
缺點:用戶體驗不好,提交時易被告知數據已被修改。
操作方式:當我們要對一個數據庫中的一條數據進行修改的時候,只有對該數據進行提交更新的時候,纔會正式對數據的衝突與否進行檢測,如果發現衝突了,則返回給用戶錯誤的信息,讓用戶決定如何去做。(如基於mysql通過加version字段實現樂觀鎖、CAS算法)
CAS(Compare and Swap):
CAS是項樂觀鎖技術,當多個線程嘗試使用CAS同時更新同一個變量時,只有其中一個線程能更新變量的值,而其它線程都失敗,失敗的線程並不會被掛起,而是被告知這次競爭中失敗,並可以再次嘗試。
悲觀鎖:
優勢:適合寫多讀少的雨霧,隔離級別爲重複讀,提高數據可靠性。
缺點:併發性不好,性能不高。
操作方式:當我們要對一個數據庫中的一條數據進行修改的時候,爲了避免同時被其他人修改,對該數據進行加鎖以防止併發。(基於mysql通過select…for update實現悲觀鎖)