樂觀鎖,每次拿數據時都認爲別人不會修改數據,因此不會上鎖,可是在更新的時候會判斷一下在此期間別人有沒有更新這個數據。可使用版本號機制和CAS算法實現。算法
樂觀鎖適用於寫比較少的狀況,這樣能夠省去鎖的開銷,加大系統的吞吐量。若是常常發生衝突,上層應用會不斷的進行retry,這樣反而是下降了性能,因此在這種狀況下用悲觀鎖就比較合適。性能
悲觀鎖,每次去拿數據的時候都認爲別人會修改,因此每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會阻塞直到它拿到鎖。數據