悲觀鎖和樂觀鎖

2022-03-14 07:22:26 字數 406 閱讀 7799

悲觀鎖和樂觀鎖的使用場景及具體實現

悲觀鎖對於每次資料操作都認為會被其他事物修改,所以使用所機制鎖住當前資料項,其他修改事物在此次資料操作完成之前都要等待。

悲觀鎖對於資料併發衝突可能性比較高的情況下使用,寫操作比較多,衝突性大會導致上層不斷地retry消耗效能。

樂觀鎖對於每次資料操作都認為不會被其他事務所修改,沒有加鎖,但是使用版本號標記,每次修改前會判斷版本號(判斷在這期間有沒有人更新過資料),版本號一致就進行資料修改,不一致就返回更新錯誤。

樂觀鎖對於資料併發衝突可能性比較小的情況下使用,寫操作比較少,衝突性小省去了鎖的開銷,提公升了效能加大了系統整個的吞吐量。

建議:通過挑選樂觀鎖,可以減小鎖力度,從而提公升吞吐.樂觀鎖需要靈活運用,現在網際網路高併發架構中,收到fail-fast思路的影響,悲觀鎖已經非常少見了。

悲觀鎖和樂觀鎖

1.悲觀鎖,正如其名,它指的是對資料被外界 包括本系統當前的其他事務,以及來自外部系統的事務處理 修改持保守態度,因此,在整個資料處理過程中,將資料處於鎖定狀態。悲觀鎖的實現,往往依靠資料庫提供的鎖機制 也只有資料庫層提供的鎖機制才能真正保證資料訪問的排他性,否則,即使在本系統中實現了加鎖機制,也無...

悲觀鎖和樂觀鎖

前幾天有人問了我乙個問題,說如果資料庫某些操作不用事務,那麼又需要保持資料的一致性,那麼該用什麼方法替代事務。我就想到了悲觀鎖和樂觀鎖的思想,下面我解釋一下在資料庫中的悲觀鎖和樂觀鎖 1.悲觀鎖就是把資料庫的一些操作,放在事務當中,依賴資料庫的隔離級別,實現對資料修改的封鎖,這樣做資料一致性可以保持...

悲觀鎖和樂觀鎖

悲觀鎖 pessimistic lock 顧名思義,就是很悲觀,每次去拿資料的時候都認為別人會修改,所以每次在拿資料的時候都會上鎖,這樣別人想拿這個資料就會block直到它拿到鎖。傳統的關係型資料庫裡邊就用到了很多這種鎖機制,比如行鎖,表鎖等,讀鎖,寫鎖等,都是在做操作之前先上鎖。樂觀鎖 optim...