樂觀鎖與悲觀鎖區別

悲觀鎖(Pessimistic Lock)數據庫

      顧名思義,就是很悲觀,每次去拿數據的時候都認爲別人會修改,因此每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。傳統的關係型數據庫裏邊就用到了不少這種鎖機制,好比行鎖,表鎖等,讀鎖,寫鎖等,都是在作操做以前先上鎖。spa


樂觀鎖(Optimistic Lock)orm

        顧名思義,就是很樂觀,每次去拿數據的時候都認爲別人不會修改,因此不會上鎖,可是在更新的時候會判斷一下在此期間別人有沒有去更新這個數據,能夠使用版本號等機制。樂觀鎖適用於多讀的應用類型,這樣能夠提升吞吐量,像數據庫若是提供相似於write_condition機制的其實都是提供的樂觀鎖。it


總結:不管是樂觀鎖仍是悲觀鎖,都有各自的優缺點。當寫的操做頻繁時能夠使用悲觀鎖。寫操做少,讀操做多時使用樂觀鎖,這樣能夠減小系統的開銷。io

相關文章
相關標籤/搜索