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

<xmp id="cogkk"><nav id="cogkk"></nav>
<dd id="cogkk"></dd>
  • <menu id="cogkk"><menu id="cogkk"></menu></menu>
    <menu id="cogkk"><code id="cogkk"></code></menu>

    卓象程序員 | 哈爾濱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久久久精品无码一区二区大全| 欧美成人精品第一区| 亚洲综合色久久一本道在线视频|国产精品久久久久久无毒不卡| 国产激情一区二区三区在线观看| 国片免费网av国片| 亚洲午夜精品A片一区二区无码|欧美精品久久久久久久小说|精品少妇人妻a√免费久久| 椎名空中文字幕一区二区|国产大片毛片免费观看|国产人成高清在线视频99|一级黄片视频2023。| 色色色9999日韩无码|最新国产91视频视频|久久国产AV三级福利麻豆|午夜男女乱婬真视频播放| 尤物精品视频无码福利网|99国产各种高潮视频|97国产精品免费视频观看|又黄又爽又色又免费视频| a男人的天堂久久a毛片|JAVA性无码HD中文|精品丝袜国产自在线拍aⅴ|中文字幕无码av人妻斩| 国产在线播放原创精品| 欧美熟妇精品一区二区三区免费|小宝精品探花一区二区AV| X亚洲中文字幕无码一区二区三区| 国产又黄又潮娇喘视频| 中文字幕在线不卡一区二区三区|亚洲天天久久中文字幕精品|亚洲国产AV综合一区二区|
    <xmp id="cogkk"><nav id="cogkk"></nav>
    <dd id="cogkk"></dd>
  • <menu id="cogkk"><menu id="cogkk"></menu></menu>
    <menu id="cogkk"><code id="cogkk"></code></menu>