InnoDB的行鎖模式及加鎖方法


 MYSQL:InnoDB的行鎖模式及加鎖方法

共享鎖:允許一個事務度一行,阻止其他事務獲取相同數據集的排他鎖。

SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE

排他鎖:允許獲取排他鎖的事務更新數據,阻止其他事務獲取相同的數據集共享讀鎖和排他寫鎖。

SELECT * FROM table_name WHERE ... FOR UPDATE

InnoDB行鎖實現方式

    InnoDB行鎖是通過索引上的索引項來實現的,這一點MySQL與Oracle不同,后者是通過在數據中對相應數據行加鎖來實現的。InnoDB這種行鎖實現特點意味者:只有通過索引條件檢索數據,InnoDB才會使用行級鎖,否則,InnoDB將使用表鎖!。

 

------------------------------------------------------------------------------------------------

下面是在MyBatis中如何實現行級鎖。

1.首先需要在使用行級鎖的實現層(ServiceImpl)加上事務,

serviceImple層:使用for update 一定要在方法上加上@Transactional(isolation = Isolation.READ_COMMITTED),當事務處理完后,for update 才會將行級鎖解除。

 

執行此方法時進行加鎖,當整個方法將事務提交后,才會解鎖。

2.Mapper,SQL使用for update 加行鎖。

經測試運行無誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM