国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

MySQL中的悲觀鎖與樂觀鎖

瀏覽:2日期:2023-10-11 14:21:26

在關系型數據庫中,悲觀鎖與樂觀鎖是解決資源并發場景的解決方案,接下來將詳細講解🔎一下這兩個并發解決方案的實際使用及優缺點。

首先定義一下數據庫,做一個最簡單的庫存表,如下設計:

CREATE TABLE `order_stock` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ’ID’, `oid` int(50) NOT NULL COMMENT ’商品ID’, `quantity` int(20) NOT NULL COMMENT ’庫存’, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

quantity代表著不同商品oid的庫存,接下來OCC及PCC使用此數據庫進行演示。

樂觀鎖 OCC

它假設多用戶并發的事務在處理時不會彼此互相影響,各事務能夠在不產生鎖的情況下處理各自影響的那部分數據。在提交數據更新之前,每個事務會先檢查在該事務讀取數據后,有沒有其他事務又修改了該數據。如果其他事務有更新的話,正在提交的事務會進行回滾。

即“樂觀鎖🔒”認為拿鎖的用戶多半是會成功的,因此在進行完業務操作需要實際更新數據的最后一步再去拿一下鎖就好。這樣就可以避免使用數據庫自身定義的行鎖,可以避免死鎖現象的產生。

UPDATE order_stock SET quantity = quantity - 1 WHERE oid = 1 AND quantity - 1 > 0;

樂觀并發控制多數用于數據爭用不大、沖突較少的環境中,這種環境中,偶爾回滾事務的成本會低于讀取數據時鎖定數據的成本,因此可以獲得比其他并發控制方法更高的吞吐量。

悲觀鎖 PCC

它可以阻止一個事務以影響其他用戶的方式來修改數據。如果一個事務執行的操作讀某行數據應用了鎖,那只有當這個事務把鎖釋放,其他事務才能夠執行與該鎖沖突的操作。

這種設計采用了“一鎖🔒二查🔍三更新”模式,就是采用數據庫中自帶 select ... for update 關鍵字進行對當前事務添加行級鎖🔒,先將要操作的數據進行鎖上,之后執行對應查詢數據并執行更新操作。

BEGINSELECT quantity FROM order_stock WHERE oid = 1 FOR UPDATE;UPDATE order_stock SET quantity = 2 WHERE oid = 1; COMMIT;

MySQL還有個問題是select ... for update語句執行中所有掃描過的行都會被鎖上,這一點很容易造成問題。因此如果在MySQL中用悲觀鎖務必要確定走了索引,而不是全表掃描。

悲觀并發控制主要用于數據爭用激烈的環境,以及發生并發沖突時使用鎖保護數據的成本要低于回滾事務的成本的環境中。

OCC 和 PCC 優缺點

OCC 優點及缺點

【優點】

樂觀鎖相信事務之間的數據競爭(data race)的概率是比較小的,因此盡可能直接做下去,直到提交的時候才去鎖定,所以不會產生任何鎖和死鎖; 可以快速響應事務,隨著并發量增加,但會出現大量回滾出現; 效率高,但是要控制好鎖的力度。

【缺點】

如果直接簡單這么做,還是有可能會遇到不可預期的結果,例如兩個事務都讀取了數據庫的某一行,經過修改以后寫回數據庫,這時就遇到了問題; 隨著并發量增加,但會出現大量回滾出現。

PCC 優點及缺點

【優點】

“先取鎖再訪問”的保守策略,為數據處理的安全提供了保證;

【缺點】

依賴數據庫鎖,效率低; 處理加鎖的機制會讓數據庫產生額外的開銷,還有增加產生死鎖的機會; 降低了并行性,一個事務如果鎖定了某行數據,其他事務就必須等待該事務處理完才可以處理那行數據。

以上就是MySQL中的悲觀鎖與樂觀鎖的詳細內容,更多關于MySQL 悲觀鎖與樂觀鎖的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 午夜主播福利视频在线观看 | 美女把张开腿男生猛戳免费视频 | 日本高清视频一区二区 | 色播亚洲精品网站 亚洲第一 | 毛片com | 欧美精品首页 | 男人一进一出桶女人视频 | 97青草香蕉依人在线播放 | 风流慈禧一级毛片在线播放 | 久久草在线观看 | 亚洲天堂色视频 | 最新亚洲精品 | 荡女妇边被c边呻吟久久 | 可以看的黄网 | 亚洲欧美一区二区三区久久 | 国产高清在线精品一区 | 很黄很色的免费视频 | 日韩欧美在线视频 | 在线视频久草 | 成人免费在线观看视频 | 国产一二三区在线 | 色偷偷亚洲第一成人综合网址 | 成年大片免费视频播放二级 | 国产精品手机在线 | 欧美人成a视频www | 国产一级一片免费播放视频 | 国产成人精品亚洲77美色 | 99久久亚洲国产高清观看 | 国产一在线精品一区在线观看 | 久草中文在线 | 亚洲精品国产专区91在线 | 久久国产精品免费观看 | 亚洲欧美国产精品专区久久 | 日本在线观看免费看片 | 国产一区二区三区免费在线观看 | 国产精品成人久久久久 | 免费国产成人午夜在线观看 | 欧美毛片在线 | 久久99精品久久久久久国产越南 | 国产精品免费视频一区 | 特黄特a级特别特级特毛片 特黄特黄 |