悲觀鎖(pessimistic lock):
每次拿資料的時候都會擔心會被別人修改(疑心重很悲觀),所以每次在拿資料的時候都會上鎖。確保自己使用的過程中不會被別人訪問,自己使用完後再解鎖。
期間需要訪問該資料的都會等待。(for update)
樂觀鎖(optimistic lock):
每次拿資料的時候都完全不擔心會被別人修改(心態好很樂觀),所以每次在拿資料的時候都不會上鎖。但是在更新資料的時候去判斷該期間是否被別人修改過(使用版本號等機制),期間該資料可以隨便被其他人讀取。
悲觀鎖並不是適用於任何場景,它也有它存在的一些不足,因為
悲觀鎖大多數情況下依靠資料庫的鎖機制實現
,以保證操作最大程度的獨占性。
如果加鎖的時間過長,其他使用者長時間無法訪問,影響了程式的併發訪問性,同時這樣對資料庫效能開銷影響也很大
,特別是對長事務而言,這樣的開銷往往無法承受。所以與悲觀鎖相對的
悲觀鎖與樂觀鎖
悲觀鎖與樂觀鎖 悲觀鎖 pessimistic locking 顧名思義就是採用一種悲觀的態度來對待事務併發問題,我們認為系統中的併發更新會非常頻繁,並且事務失敗 了以後重來的開銷很大,這樣以來,我們就需要採用真正意義上的鎖來進行實現。悲觀鎖的基本思想就是每次一 個事務讀取某一條記錄後,就會把這條記...
樂觀鎖與悲觀鎖
悲觀鎖 pessimistic locking 顧名思義就是採用一種悲觀的態度來對待事務併發問題,我們認為系統中的併發更新會非常頻繁,並且事務失敗了以後重來的開銷很大,這樣以來,我們就需要採用真正意義上的鎖來進行實現。悲觀鎖的基本思想就是每次乙個事務讀取某一條記錄後,就會把這條記錄鎖住,這樣 其它的...
樂觀鎖與悲觀鎖
鎖 locking 這個概念在我們學習多執行緒的時候曾經接觸過,其實這裡的鎖和多執行緒裡面處理併發的鎖是乙個道理,都是暴力的把資源歸為自己所有。這裡我們用到鎖的目的就是通過一些機制來保證一些資料在某個操作過程中不會被外界修改,這樣的機制,在這裡,也就是所謂的 鎖 即給我們選定的目標資料上鎖,使其無法...