91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

樂觀鎖的實現方式有哪些

發布時間:2020-07-03 14:18:16 來源:億速云 閱讀:392 作者:元一 欄目:MySQL數據庫

樂觀鎖的實現方式有哪些?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

樂觀鎖( Optimistic Locking ) 相對 悲觀鎖而言,樂觀鎖機制采取了更加寬松的加鎖機制。 悲觀鎖大多數情況下依靠 數據庫的鎖機制實現,以保證操作最大程度的獨占性。但隨之而來的就是 數據庫性能的大量開銷,特別是對長 事務而言,這樣的開銷往往無法承受。而樂觀鎖機制在一定程度上解決了這個問題。樂觀鎖,大多是基于數據版本( Version )記錄機制實現。

1、版本號機制

一般是說在數據表中加上一個數據庫版本號version字段,在表述數據被修改的次數當數據被修改時,它的version 值會加1。

如:

當然線程A需要更新數據值時,在讀取數據的同時也會讀取 version 值,在提交更新時,若剛才讀取到的 version 值為當前數據庫中的 version 值相等時才更新,否則重試更新操作,直到更新成功。

2、CAS 算法

CAS(compare and swap) 比較并交換,有三個操作數,內存地址V ,預期值B,要替換得到的目標子A。

CAS指令執行時,比較內存地址V與預期值B是否相等,若相等則將A賦給B,(不相等則會循環比較直到相等)整個比較賦值操作是一個原子操作。

CAS缺點:

(1)循環時間開銷大:當內存地址V與預期值B不相等時會一直循環比較直到相等;

(2)只能保證一個共享變量的原子操作;

(3)如果一個變量V初次讀取的時候是A值,并且在準備賦值的時候檢查到它仍然是A值,那么我們就能說明它的值沒有被其他線程修改過嗎?很明顯不是,因為在這段時間內它的值可能被改為其他值,然后又被改回A,那CAS操作就會認為它從來沒被改過,這個問題就被稱為 CAS 操作的“ABA” 問題;

關于樂觀鎖的實現方式有哪些問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

随州市| 平利县| 手机| 三穗县| 宣城市| 宁河县| 攀枝花市| 东辽县| 天等县| 柳林县| 株洲县| 格尔木市| 濉溪县| 浑源县| 潼关县| 岳池县| 内黄县| 嘉善县| 泽普县| 湖南省| 库车县| 洛阳市| 平昌县| 贺兰县| 莆田市| 青神县| 深泽县| 南汇区| 清新县| 宁明县| 疏附县| 乌鲁木齐县| 罗平县| 禄劝| 资讯| 陇南市| 绵阳市| 宜都市| 池州市| 九龙城区| 电白县|