悲觀鎖和樂觀鎖

2022-02-11 11:43:45 字數 621 閱讀 7226

1、什麼悲觀鎖?

顧名思義,悲觀鎖是基於一種悲觀的態度類來防止一切資料衝突,它是以一種預防的姿態在修改資料之前把資料鎖住,然後再對資料進行讀寫,在它釋放鎖之前任何人都不能對其資料進行操作,直到前面乙個人把鎖釋放後下乙個人資料加鎖才可對資料進行加鎖,然後才可以對資料進行操作,一般資料庫本身鎖的機制都是基於悲觀鎖的機制實現的;

特點:可以完全保證資料的獨占性和正確性,因為每次請求都會先對資料進行加鎖, 然後進行資料操作,最後再解鎖,而加鎖釋放鎖的過程會造成消耗,所以效能不高;

手動加悲觀鎖:讀鎖lock tables test_db read釋放鎖unlock tables;

寫鎖:lock tables test_db write釋放鎖unlock tables;

2、什麼是樂觀鎖?

樂觀鎖是對於資料衝突保持一種樂觀態度,運算元據時不會對操作的資料進行加鎖(這使得多個任務可以並行的對資料進行操作),只有到資料提交的時候才通過一種機制來驗證資料是否存在衝突(一般實現方式是通過加版本號然後進行版本號的對比方式實現);

特點:樂觀鎖是一種併發型別的鎖,其本身不對資料進行加鎖通而是通過業務實現鎖的功能,不對資料進行加鎖就意味著允許多個請求同時訪問資料,同時也省掉了對資料加鎖和解鎖的過程,這種方式大大的提高了資料操作的效能;

悲觀鎖和樂觀鎖

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

悲觀鎖和樂觀鎖

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

悲觀鎖和樂觀鎖

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