樂觀鎖 與 悲觀鎖 來解決數據庫並發問題


1. 背景

學習、工作用了不少數據庫寫sql還是不成問題。

在解決數據庫並發沖突時,更多的是在程序編程邏輯中加鎖,來解決業務中可能的數據庫並發更新問題。

並不是使用數據庫或者ORM框架來處理並發沖突。悲觀鎖、樂觀鎖 是一種解決數據庫並發的思路。

2. 悲觀鎖與樂觀鎖介紹

         悲觀鎖:持"悲觀態度",假設會發現並發更新沖突,屏蔽一切可能違反數據完整性的操作。在更新操作時,先進行加鎖(使用數據庫提供的鎖機制)來從底層保證數據的正確性。

         樂觀鎖:持"樂觀態度",假設多事務在處理時不會彼此相互影響。各事務在不產生鎖的情況下處理各自影響的數據,在提交數據更新之前,每個事務先檢查該事務更改數據后,有沒有其他事務又修改了該數據。如果其他事務有更新的話,正在提交的事務會進行回滾。返回錯誤信息,用於可以自行處理。

         悲觀鎖適用於更新操作出現並發更新數據多的情況,可以防止數據丟失、臟讀。樂觀鎖,反之。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM