樂觀鎖與悲觀鎖的簡單區分

一、鎖的出現,是由於併發讀寫同一個數據的時候,須要進行數據完備性的保護,避免髒讀、髒寫等。數據庫

二、樂觀鎖,須要在事務中加鎖,在讀取數據的時候,沒必要在乎數據是否已經被修改了(即容許髒讀);可是在寫入數據的時候,要檢查數據是否已經被修改了(能夠經過版本號等機制控制),若是被修改那麼就通知事務調用者,事務失敗了。併發

三、悲觀鎖,須要在事務中加鎖,在讀取寫入數據的時候,都須要考慮數據是否已經被修改,若是被修改了,那麼就通知事務調用者,事務被阻塞了,進入等待狀態。分佈式

四、從性能上看,樂觀鎖性能會高一些,由於悲觀鎖要檢查更多的數據變更狀況,並且還會存在阻塞。性能

五、從使用場景上看,悲觀鎖通常用於要求很強的數據一致性的系統,讀寫都不容許「髒」,樂觀鎖通常用於一致性稍弱的系統,不容許髒寫,可是容許髒讀。spa

 

概念引伸:數據庫的各類鎖,分佈式系統的CAP原則。事務

相關文章
相關標籤/搜索