亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

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

瀏覽:64日期: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。

相關文章:
主站蜘蛛池模板: 国产成人v视频在线观看 | 国产人成精品香港三级在 | 国产免费一区二区三区在线观看 | 国产精品白嫩在线观看 | 亚洲天堂色视频 | 国内视频在线 | 毛片在线看免费 | 久久er这里都是精品23 | 欧美伦理片在线 | 婷婷色在线观看 | 中文字幕亚洲国产 | 小明免费看视频 | 亚瑟福利视频在线观看 | 丁香婷婷成人 | 久久综合精品不卡一区二区 | 男女一级做片a性视频 | 成人在线视频免费看 | 国产精品久久久久无毒 | 国产精品免费久久久免费 | 欧美日本俄罗斯一级毛片 | 色综合夜夜嗨亚洲一二区 | 国产精品亚洲精品日韩动图 | 黄色综合网站 | 99久久免费午夜国产精品 | 99久热只有精品视频免费观看17 | 欧美精品一区二区三区免费播放 | 一97日本道伊人久久综合影院 | 国产成人精品s8p视频 | 91porn国产| 岛国视频在线观看免费播放 | 亚洲午夜片 | 免费一级毛片不卡不收费 | 日韩毛片在线播放 | 性做爰片免费视频毛片中文ilo | 欧美久久久久久久一区二区三区 | 国产精品一级毛片不收费 | 亚洲国产一区在线观看 | 国产成人禁片免费观看 | xxx性欧美人 | 欧美aaaa黄色一级毛片 | 亚洲精品在线网 |