热99re久久精品|天天综合网久久综合免费人成|91久久久久久久精品青草| 亚洲AV无码无一区二区Ⅰ久久|

  • <tt id="4ayss"><strong id="4ayss"></strong></tt>
  • <xmp id="4ayss"><menu id="4ayss"></menu><nav id="4ayss"><strong id="4ayss"></strong></nav>
    <nav id="4ayss"><strong id="4ayss"></strong></nav>
  • <nav id="4ayss"></nav>

    卓象程序員 | 哈爾濱IT培訓 | 品質教育,口碑傳承 | 為做出口口相傳,好口碑的教育品牌而奮斗!

    卓象程序員讓每一位學員高薪就業 聯系我們13101507057

    加微信,了解詳情
    您所在的位置:首頁 > 文章 >卓象技術

    「卓象程序員」MYSQL的悲觀鎖和樂觀鎖
    時間: 2019-11-14 15:41:23     來源: 卓象IT實訓基地【原創】

    悲觀鎖(Pessimistic Lock)


            悲觀鎖(Pessimistic Lock), 顧名思義,就是很悲觀,每次去拿數據的時候都認為別人會修改,所以每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。傳統的關系型數據庫里邊就用到了很多這種鎖機制,比如行鎖,表鎖等,讀鎖,寫鎖等,都是在做操作之前先上鎖。

        最常用的就是 select … for update,它是一種行鎖,會把select出來的結果行鎖住,在本事務提交或者回滾之前,不允許其他事務對這些行做update、delete、for update操作。



    樂觀鎖(Optimistic Lock)    



            樂觀鎖(Optimistic Lock), 顧名思義,就是很樂觀,每次去拿數據的時候都認為別人不會修改,所以不會上鎖,期間該數據可以隨便被其他人讀取,但是在更新的時候會判斷一下在此期間別人有沒有去更新這個數據,可以使用版本號等機制。

            版本號機制是樂觀鎖最常用的方式,就是在表中增加一個版本號的字段,更新前先查一遍獲取版本號,再作為更新語句的where條件進行更新,如果數據在獲取版本號之后,在更新之前已經改變了,那就會更新失敗,因為最后更新了0條數據,PHP后臺拿到更新數如果為0,則說明更新失敗,出現了并發問題,然后做具體的處理。

    例如有兩個人同時對某條數據做修改,過程如下:

    操作員A操作如下:

    select id, balance, version from table where id=“1”;

    查詢結果:id=1, balance=1000, version=1

    update table set balance=balance+100, version=version+1 where id=“1” and version=1;

    執行后,返回的更新結果是1,說明更新了一條,數據庫里的結果是:id=1, balance=1100, version=2

    操作員B操作如下:

    select id, balance, version from table where id=“1”;

    查詢結果:id=1, balance=1000, version=1, 說明操作員A還沒修改。

    update table set balance=balance-50, version=version+1 where id=“1” and version=1 ;

    查的時候,操作員A還沒修改,當要更新時,操作員A已經先修改成功,所以數據庫里實際值是id=1, balance=1100, version=2,

    操作員B也將版本號加一(version=2)試圖向數據庫提交數據(balance=950),但此時查不到where id=“1” and version=1 的數據,

    所以update就失敗了,執行結果是0,說明沒有對任何數據更新成功。

    現在再去查一下,結果還是操作員A操作完成之后的結果

    select id, balance, version from table where id=“1”;

    查詢結果:id=1, balance=1100, version=2

    以上是自己實現版本號機制的原理,真正使用的版本號機制是數據庫本身帶有的機制,一旦發現更新的版本號不是最新的就會被駁回。


    每日分享技術干貨~

    報名卓象免費訓練營課程

    學習最新熱門IT技術

    找一份自己滿意的高薪工作

    15天免費學習??!

    卓象程序員

    ★ 零基礎,隨時體驗

    ★ 免費試聽,滿意后再報名

    ★ 小班授課,學習氛圍濃厚

    ★ 口碑相傳,80%學員來自口碑推薦

    ★ 教學嚴管,闖關式學習保障學習效果

    ★ 公司地點,哈爾濱市東直路123號7樓



    国产精品无码第三区|91精品久久久久久久久无码| 国产免费久久精品99re不卡|国产精品美女久久久久小说| 543ev首页国产婷婷|日韩欧美精品一中文字幕|国产在线精品无码二区二区|九九精品热国产九九精品| 国产成人永久免费视| 囯产精品无码一区二区三区不卡|永久免费看a片无码网站宅男| 亚洲午夜精品a片一区二区无码l| 久久99精品网久久| 国产一卡2卡3卡四卡国色天香|亚洲成av人片在线观看无码| 无码人妻久久一区二区三中文字幕| 一本到高清无码中文| av无码精品久久久久精品免费| 欧美日韩A片一区二区久久精品|久久精品亚洲中文字幕无码| 中文毛片无遮挡高清免费|国产国产人免费视频成|国产在线98福利播放视频|美女视频黄全部免费视频| 免费国产小视频国产| 亚洲一区二区无码中文字幕麻豆|999国产精品永久免费视频|久久激情亚洲精品无码aV| 国产女人久久精品视| 国产高潮久久一区二区三区四|国产无码精品一区二区三区|2020最新国产永久在线|
  • <tt id="4ayss"><strong id="4ayss"></strong></tt>
  • <xmp id="4ayss"><menu id="4ayss"></menu><nav id="4ayss"><strong id="4ayss"></strong></nav>
    <nav id="4ayss"><strong id="4ayss"></strong></nav>
  • <nav id="4ayss"></nav>