麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 基于數據庫如何實現分布式鎖?有什么缺陷?

基于數據庫如何實現分布式鎖?有什么缺陷?

來源:千鋒教育
發布人:wjy
時間: 2022-09-30 11:52:17 1664509937

  基于數據庫表(鎖表,很少使用)

  最簡單的方式可能就是直接創建一張鎖表,然后通過操作該表中的數據來實現了。當我們想要獲得鎖的時候,就可以在該表中增加一條記錄,想要釋放鎖的時候就刪除這條記錄。 為了更好的演示,我們先創建一張數據庫表,參考如下:

基于數據庫如何實現分布式鎖1

  當我們想要獲得鎖時,可以插入一條數據:

基于數據庫如何實現分布式鎖2

  當需要釋放鎖的時,可以刪除這條數據:

基于數據庫如何實現分布式鎖3

  基于悲觀鎖

  悲觀鎖實現思路?

  在對任意記錄進行修改前,先嘗試為該記錄加上排他鎖(exclusive locking)。

  如果加鎖失敗,說明該記錄正在被修改,那么當前查詢可能要等待或者拋出異常。 具體響應方式由開發者根據實際需要決定。

  如果成功加鎖,那么就可以對記錄做修改,事務完成后就會解鎖了。

  其間如果有其他對該記錄做修改或加排他鎖的操作,都會等待我們解鎖或直接拋出異常。

  以MySQL InnoDB中使用悲觀鎖為例?

  要使用悲觀鎖,我們必須關閉mysql數據庫的自動提交屬性,因為MySQL默認使用autocommit模式,也就是說,當你執行一個更新操作后,MySQL會立刻將結果進行提交。set autocommit=0;

基于數據庫如何實現分布式鎖4

  上面的查詢語句中,我們使用了select…for update的方式,這樣就通過開啟排他鎖的方式實現了悲觀鎖。此時在t_goods表中,id為1的 那條數據就被我們鎖定了,其它的事務必須等本次事務提交之后才能執行。這樣我們可以保證當前的數據不會被其它事務修改。

  上面我們提到,使用select…for update會把數據給鎖住,不過我們需要注意一些鎖的級別,MySQL InnoDB默認行級鎖。行級鎖都是基于索引的,如果一條SQL語句用不到索引是不會使用行級鎖的,會使用表級鎖把整張表鎖住,這點需要注意。

  基于樂觀鎖

  樂觀并發控制(又名“樂觀鎖”,Optimistic Concurrency Control,縮寫“OCC”)是一種并發控制的方法。它假設多用戶并發的事務在處理時不會彼此互相影響,各事務能夠在不產生鎖的情況下處理各自影響的那部分數據。在提交數據更新之前,每個事務會先檢查在該事務讀取數據后,有沒有其他事務又修改了該數據。如果其他事務有更新的話,正在提交的事務會進行回滾。

  以使用版本號實現樂觀鎖為例?

  使用版本號時,可以在數據初始化時指定一個版本號,每次對數據的更新操作都對版本號執行+1操作。并判斷當前版本號是不是該數據的最新的版本號。

基于數據庫如何實現分布式鎖5

  需要注意的是,樂觀鎖機制往往基于系統中數據存儲邏輯,因此也具備一定的局限性。由于樂觀鎖機制是在我們的系統中實現的,對于來自外部系統的用戶數據更新操作不受我們系統的控制,因此可能會造成臟數據被更新到數據庫中。在系統設計階段,我們應該充分考慮到這些情況,并進行相應的調整(如將樂觀鎖策略在數據庫存儲過程中實現,對外只開放基于此存儲過程的數據更新途徑,而不是將數據庫表直接對外公開)。

  缺陷

  對數據庫依賴,開銷問題,行鎖變表鎖問題,無法解決數據庫單點和可重入的問題。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 精品无码久久久久久久动漫| 成人性生交大片免费看| 欧美性aaa| 中文字幕制服诱惑| 久久精品国产99久久无毒不卡| 久久亚洲精品无码| 女生张开腿给男生捅| 美女的尿口免费看软件 | 色www视频永久免费男的天堂 | 萌白酱福利| 污视频软件大全| 处破女18分钟完整版| 美女扒开尿口让男人捅爽| 1313苦瓜网在线播| 篠田优在线播放| 亚洲欧美一区二区三区电影| 黑人在线观看| 国产精品成人va| 色欲香天天天综合网站| 波多野结衣全部系列在线观看| 国产精品亚洲片在线观看不卡 | 男人肌肌捅女人肌肌视频| 嫩草影院在线播放www免费观看| 制服丝袜中文字幕在线观看| 亚洲日产欧| 无套影院| 美女扒开屁股让男人桶| 日本一道高清一区二区三区| 亚洲人成电影院在线观看| 男乱女| 亚洲欧洲精品成人久久曰| 国产高清免费在线| 国产一区二区三区在线观看免费| 四虎成人精品免费影院| 四虎国产精品免费久久影院| www四虎在线高清| 村上里沙在线播放| 伊人精品久久久大香线蕉99| 草草浮力影视| 妞干网免费视频观看| 三级免费黄色片|