色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

事務 - mysql共享鎖lock in share mode的實際使用場景

瀏覽:86日期:2022-06-14 10:09:17

問題描述

看了MySQL的官方文檔: 關于鎖定對象的部分

分兩種鎖共享鎖: SELECT ... LOCK IN SHARE MODE排它鎖: SELECT ... FOR UPDATE

其中排他鎖這個場景大家都知道, 就是多個session的事務要對同一個表的一/多條數據進行更新操作的時候, 要先鎖定再更新來消除并發造成的數據不一致

而共享鎖的使用場景說的有主-從表的這種情況, 比如想在從表insert一條記錄, 需要先將主表相關的數據加S鎖鎖定, 然后再insert從表, 來實現主從表數據一致性, 即有可能其他session會再此時delete主表的這條數據而造成只有從表有數據而主表無數據的數據不一致結果

但是顯示加S鎖容易造成deadLock, 即session1在數據加S鎖, 然后session2在相同數據也加S鎖, 然后同時update, 必然會導致其中一個session的事務監測到deadlock,而終止事務

本來他的使用場景是主-從表的情況, 但是實際場景可能錯綜復雜, 這兩種場景都是涉及, 那么手動加共享鎖的是否還有必要呢???? 是否說明實際中不會使用這項技術呢?

問題解答

回答1:

確實是這樣的,LOCK IN SHARE MODE是讀鎖(只是不讓別人寫),FOR UPDATE是寫鎖(還不讓別人加讀鎖),讀鎖升級成寫鎖是可能產生死鎖的(但寫鎖降級成讀鎖則不會,我還真不知道MySQL如何對鎖降級),所以程序中需要考慮超時的問題(或者重試或者放棄)。

所以大部分情況下都如果SELECT后接下來會有UPDATE動作的話,一般會用FOR UPDATE而不是LOCK IN SHARE MODE。

相關文章:
主站蜘蛛池模板: 欧美激情一区二区三区高清视频 | a级国产乱理伦片在线观看国 | 中国女人18xnxx视频 | 能在线观看的一区二区三区 | 欧美日韩精品免费一区二区三区 | 国产成人免费午夜在线观看 | 69欧美另类xxxxx高清 | 久久精品国产99国产 | 欧美三级在线视频 | 在线观看免费精品国产 | 国产成人毛片亚洲精品不卡 | 亚洲深夜福利视频 | 男女视频在线观看免费高清观看 | 99在线视频播放 | 久久久久久久亚洲精品一区 | 国产麻豆入在线观看 | 国产精品久久久久久久久99热 | 日韩久操 | 波多野结衣视频在线观看地址免费 | 国产美女作爱全过程免费视频 | 国产99视频精品免费视频免里 | 亚洲深夜视频 | 欧美日韩一区二区在线视频 | 女人张开腿给男人桶爽免费 | 国产精品久久久影院 | 欧美日韩高清性色生活片 | 美女的让男人桶到爽软件 | 看中国一级毛片 | 欧美日韩在线播放一区二区三区 | 天天综合天天看夜夜添狠狠玩 | 精品国产一区二区三区久久 | 日韩在线中文 | 国产美女做爰免费视频网址 | 99j久久精品久久久久久 | 深夜福利视频在线观看 | 在线观看亚洲精品国产 | 男人一进一出桶女人视频 | 国产成人久久精品区一区二区 | a级片在线 | 久久久久欧美精品 | 午夜黄色毛片 |