AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

聊聊樂觀鎖與悲觀鎖

來源: 責編: 時間:2024-05-17 17:48:33 205觀看
導讀悲觀鎖在MySQL中,悲觀鎖依賴數據庫提供的鎖機制來實現。在InnoDB引擎中,使用悲觀鎖需要先關閉MySQL數據庫的自動提交屬性,然后通過select ... for update來進行加鎖。在數據庫中,悲觀鎖的流程如下:? 在對記錄進行修改前,先

悲觀鎖

在MySQL中,悲觀鎖依賴數據庫提供的鎖機制來實現。在InnoDB引擎中,使用悲觀鎖需要先關閉MySQL數據庫的自動提交屬性,然后通過select ... for update來進行加鎖。9PW28資訊網——每日最新資訊28at.com

在數據庫中,悲觀鎖的流程如下:9PW28資訊網——每日最新資訊28at.com

? 在對記錄進行修改前,先嘗試為該記錄加上排他鎖(exclusive lock)。9PW28資訊網——每日最新資訊28at.com

? 如果加鎖失敗,說明該記錄正在被修改,此時當前查詢可能需要等待或拋出異常,具體響應方式由開發者根據實際需求決定。9PW28資訊網——每日最新資訊28at.com

? 如果成功加鎖,則可以對記錄進行修改,事務完成后鎖將被釋放。9PW28資訊網——每日最新資訊28at.com

? 其間若有其他操作試圖對該記錄進行修改或加排他鎖,則會等待當前鎖的釋放或直接拋出異常。9PW28資訊網——每日最新資訊28at.com

我們以電商平臺下單過程中扣減庫存的需求為例,說明如何使用悲觀鎖:9PW28資訊網——每日最新資訊28at.com

-- 0.開始事務begin; -- 1.查詢出商品信息SELECT stock FROM products WHERE product_id = 12345 FOR UPDATE;-- 2.修改商品stock為2update products set stock=2 where product_id = 12345;-- 3.提交事務commit;

在對id=1的記錄進行修改前,先通過FOR UPDATE的方式加鎖,然后再進行修改。這就是典型的悲觀鎖策略。9PW28資訊網——每日最新資訊28at.com

如果上述修改庫存的代碼發生并發,同一時間只有一個線程可以開啟事務并獲得id=1的鎖,其他事務必須等本次事務提交之后才能執行。這樣,我們可以保證當前的數據不會被其他事務修改。9PW28資訊網——每日最新資訊28at.com

上面提到,使用SELECT ... FOR UPDATE會將數據鎖住,不過我們需要注意一些鎖的級別。MySQL InnoDB默認使用行級鎖。行級鎖都是基于索引的,如果一條SQL語句未使用索引,優化器在選擇時,若發現鎖表可能性能更好,有可能會直接鎖表。9PW28資訊網——每日最新資訊28at.com

上面這個點之前也有在文章提到過: 9PW28資訊網——每日最新資訊28at.com

日活3kw的實際庫存業務場景中的超賣到底怎么解決的9PW28資訊網——每日最新資訊28at.com

感興趣的可以參考閱讀一下,希望對你有所幫助9PW28資訊網——每日最新資訊28at.com

樂觀鎖

MySQL中的樂觀鎖主要通過CAS(Compare and Swap)的機制來實現,通常使用版本號(version)來實現。9PW28資訊網——每日最新資訊28at.com

CAS是一種樂觀鎖技術,當多個線程嘗試使用CAS同時更新同一個變量時,只有其中一個線程能成功更新變量的值,而其他線程都失敗。失敗的線程并不會被掛起,而是被告知在此次競爭中失敗,并可以再次嘗試。9PW28資訊網——每日最新資訊28at.com

以扣減庫存為例,通過樂觀鎖可以實現如下:9PW28資訊網——每日最新資訊28at.com

-- 查詢出商品信息,stock = 3select stock from products product_id id= 1-- 根據商品信息生成訂單-- 修改商品stock為2update products set stock=2 where id=1 and stock = 3;

以上,在更新之前,先查詢庫存表中當前的庫存數(stock),然后在執行更新時,將庫存數作為修改條件。提交更新時,對比數據庫表記錄的當前庫存數與第一次查詢得到的庫存數,若兩者相等,則執行更新;否則,視為數據已過期。9PW28資訊網——每日最新資訊28at.com

題外話

悲觀鎖

在對數據庫中的數據進行修改時,為了避免同時被其他人修改,最好的方法是直接對該數據進行加鎖以防止并發。這種在修改數據之前先鎖定再修改的方式被稱為悲觀并發控制(又稱“悲觀鎖”,Pessimistic Concurrency Control,縮寫為“PCC”)。9PW28資訊網——每日最新資訊28at.com

悲觀鎖之所以被稱為悲觀,是因為這是一種對數據的修改抱有悲觀態度的并發控制方式。一般來說,我們認為數據被并發修改的概率較大,因此在修改之前先加鎖。9PW28資訊網——每日最新資訊28at.com

悲觀并發控制實際上是一種保守的策略,即“先取鎖再訪問”,它為數據處理的安全性提供了保證。9PW28資訊網——每日最新資訊28at.com

圖片圖片9PW28資訊網——每日最新資訊28at.com

在效率方面,處理加鎖機制會導致數據庫產生額外的開銷,增加了產生死鎖的風險。此外,悲觀鎖還可能降低并行性,因為如果一個事務鎖定了某行數據,其他事務就必須等待該事務完成才能處理該行數據。9PW28資訊網——每日最新資訊28at.com

樂觀鎖

樂觀鎖(Optimistic Locking)是相對悲觀鎖而言的。樂觀鎖假設數據在一般情況下不會發生沖突,因此在數據提交更新時才會實際檢查數據是否沖突。如果發現沖突,則會向用戶返回錯誤信息,讓用戶決定如何處理。9PW28資訊網——每日最新資訊28at.com

與悲觀鎖相比,樂觀鎖在處理數據庫時并不會使用數據庫提供的鎖機制。一般來說,樂觀鎖的實現方式是通過記錄數據的版本信息。9PW28資訊網——每日最新資訊28at.com

圖片圖片9PW28資訊網——每日最新資訊28at.com

樂觀并發控制相信事務之間的數據競爭(data race)的概率較小,因此盡可能直接進行操作,直到提交時才對數據進行檢查和鎖定。這樣做不會產生任何鎖或死鎖。9PW28資訊網——每日最新資訊28at.com

如何選擇

在樂觀鎖與悲觀鎖的選擇上面,主要看下兩者的區別以及適用場景就可以了。9PW28資訊網——每日最新資訊28at.com

1. 樂觀鎖并未真正加鎖,效率高。適用于讀操作頻繁,寫操作相對較少的場景。一旦鎖的粒度掌握不好,更新失敗的概率就會比較高,容易發生業務失敗。9PW28資訊網——每日最新資訊28at.com

2. 悲觀鎖依賴數據庫鎖,效率低。更新失敗的概率比較低。適用于寫操作較為頻繁,且并發寫入的概率較高的場景。9PW28資訊網——每日最新資訊28at.com

根據以上區別和場景特點,可以針對具體業務需求選擇合適的并發控制策略。當然最多的場景其實當屬于高并發場景如何選擇。9PW28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-88933-0.html聊聊樂觀鎖與悲觀鎖

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Spring注入還可以這樣玩!漲知識了

下一篇: 誰說PHP不能異步和并行運行?

標簽:
  • 熱門焦點
  • 6月iOS設備好評榜:第一蟬聯榜首近一年

    作為安兔兔各種榜單里變化最小的那個,2023年6月的iOS好評榜和上個月相比沒有任何排名上的變化,僅僅是部分設備好評率的下降,長年累月的用戶評價和逐漸退出市場的老款機器讓這
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個人開發仿造稿定設計的圖片編輯器到現在,不知不覺已過去一年時間了,期間我經歷了裁員失業、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元“人在職場,應該選擇什么樣的著裝?”近日,在網絡上,一個與著裝相關的帖子引發關注,在該帖子里,一位在高級寫字樓亞洲金
  • 小米MIX Fold 3配置細節曝光:搭載領先版驍龍8 Gen2+罕見5倍長焦

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • 回歸OPPO兩年,一加贏了銷量,輸了品牌

    成為OPPO旗下主打性能的先鋒品牌后,一加屢創佳績。今年618期間,一加手機全渠道銷量同比增長362%,憑借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • AI藝術欣賞體驗會在上海梅賽德斯奔馳中心音樂俱樂部上演

    光影交錯的鏡像世界,虛實幻化的視覺奇觀,虛擬偶像與真人共同主持,這些場景都出現在2019世界人工智能大會的舞臺上。8月29日至31日,“AI藝術欣賞體驗會”在上海
  • 上海舉辦人工智能大會活動,建設人工智能新高地

    人工智能大會在上海浦江兩岸隆重拉開帷幕,人工智能新技術、新產品、新應用、新理念集中亮相。8月30日晚,作為大會的特色活動之一的上海人工智能發展盛典人工
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主“七王”在群里介紹一些刷單賺
Top