麻豆黑色丝袜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
主站蜘蛛池模板: 久久精品国产亚洲欧美| 性xxxxhd高清| 在车子颠簸中进了老师的身体| 国产大学生一级毛片绿象| 哒哒哒免费视频观看在线www| 大女小娟二女小妍| 野花视频在线观看免费观看最新| 4408私人影院| 三级黄色片在线观看| 久久久久久久久久久久久久久| 丝瓜草莓www在线观看| 日本欧美视频在线观看| 天天躁夜夜踩狠狠踩2022| 久久久久无码国产精品一区| 古装一级淫片a免费播放口| 最近免费中文字幕大全高清大全1 波多野结衣中文无毒不卡 | 久久精品a亚洲国产v高清不卡| a国产乱理伦片在线观看夜| 免费看毛片网| 特a级片| 再深点灬舒服灬快h视频| 99久久精品免费看国产一区二区三区 | 欧洲老妇性| 欧美交换乱理伦片在线观看| 看一级毛片| 日本三级免费看| 日本电车强视频在线播放| 色视频色露露永久免费观看| 五月婷婷深爱| 性爱狂魔| 玖玖色资源站| 日出水了特别黄的视频| 蜜中蜜3在线观看视频| 中文字幕国语对白在线电影| 麻豆免费电影| 波多野结衣电影一区二区| 奶大灬舒服灬太大了一进一出| 黑人一级黄色片 | 国产精品久久一区二区三区| 十六以下岁女子毛片免费| 性做久久久久久免费观看|